首页 文章

Laravel 5.6模型扩展了其他模型

提问于
浏览
0

在我的包中,我已经拥有了自己的命名空间模型

<?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
}

我该怎么做?

enter image description here

所以在控制器中我想 use App\Category; 并希望从 vendor/nosennij/laravel-catmenubread/models/Category.php 中的包模型访问 scopeMainsubcategoriesparent 方法

工作变体https://github.com/n-osennij/laravel-category

1 回答

  • 1

    在您的包中移动 src 目录下的 models 目录,并将 M 大写,例如 src/Models/Category.php .

    然后将 Category 中的命名空间更改为:

    namespace Nosennij\LaravelCategoryMenuAndBreadcrumbs\Models;
    

    然后在您的app目录中的 Category 类中将其更改为:

    use Nosennij\LaravelCategoryMenuAndBreadcrumbs\Models\Category as ParentCategory;
    
    class Category extends ParentCategory
    

相关问题