php - Laravel 5.6 模型扩展了其他模型
问题描述
在我的包中,我提供了带有自己命名空间的模型
<?php
namespace Nosennij\LaravelCategoryMenuAndBreadcrumbs\models;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
public function scopeMain($query)
{
return $query->where('parent_id', 0);
}
public function subcategories(){
return $this->hasMany(Category::class, 'parent_id');
}
public function parent(){
return $this->belongsTo(Category::class, 'parent_id');
}
}
当我安装包时,如果我不将此模型复制到 app 文件夹并且不将命名空间更改为 App 会很好。最好从导入所有父方法的包中扩展此模型。我尝试下一个方法 1) php artisan make:model Category
2) 尝试扩展
namespace App;
use Illuminate\Database\Eloquent\Model;
use Nosennij\LaravelCategoryMenuAndBreadcrumbs\models\Category as ParentCategory;
class Category extends ParentCategory
{
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
parent::boot();
}
//my own new methods or methods rewriting parent methods
}
我该怎么做?
所以在控制器中,我想要use App\Category;
并且想要访问包模型中的scopeMain
, subcategories
,方法parent
vendor/nosennij/laravel-catmenubread/models/Category.php
解决方案
在你的包中移动你的models
目录src
并大写M
例如src/Models/Category.php
。
然后将命名空间更改Category
为:
namespace Nosennij\LaravelCategoryMenuAndBreadcrumbs\Models;
然后在您Category
的应用程序目录中的类中将其更改为:
use Nosennij\LaravelCategoryMenuAndBreadcrumbs\Models\Category as ParentCategory;
class Category extends ParentCategory
推荐阅读
- javascript - 如何处理 Promise 递归
- bash - AWS s3 同步在 SIGTERM 陷阱上不断失败
- javascript - 为什么在 Wordpress 插件中未检测到 Angular app-root?
- c# - IHttpContextAccessor.HttpContext.User.Identity 显示 CurrentUserService 服务中的所有空属性
- sql-server - 如何复制 SCH_S、SCH_M 死锁
- ruby-on-rails - Rails 5.2 tinymce_rails gem 不显示多个工具栏
- python - 使用分组结果过滤 Pandas 数据框
- excel - 如何使用 If-Else 语句过滤表?
- java - 无法在项目 XX 上执行目标 无法解析项目的依赖关系。返回码为:501,ReasonPhrase:HTTPS 必填
- javascript - 可以使用 CustomValidators 来防止数据输入到文本框中吗?