在我的包中,我已经拥有了自己的命名空间模型
<?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;
并希望从 vendor/nosennij/laravel-catmenubread/models/Category.php
中的包模型访问 scopeMain
, subcategories
, parent
方法
1 回答
在您的包中移动
src
目录下的models
目录,并将M
大写,例如src/Models/Category.php
.然后将
Category
中的命名空间更改为:然后在您的app目录中的
Category
类中将其更改为: