Iva*_*pov 2 php laravel eloquent laravel-nova
一天的好时光!
我正在尝试在Laravel Nova内部创建类似博客系统的内容。
我有一个表articles以及抽象模型AbstractArctile。
我也有3个类别:
App\Models\News\Article扩展App\Models\Abstract\AbstractArticleApp\Models\Digests\Article扩展App\Models\Abstract\AbstractArticleApp\Models\Offtopic\Article扩展App\Models\Abstract\AbstractArticle该表articles具有一个名为category的字段,并且有3种类型的类别:新闻,摘要,offtopic。
除了扩展抽象模型之外,每个资源模型还定义了一个属性,该属性按以下方式属于其类别:
/**
* To which category this article belongs to
* @var array
*/
protected $attributes = [
'category' => 'news'
];
Run Code Online (Sandbox Code Playgroud)
我在Nova中指定类别下创建文章没有问题,但是,除了显示指定类别中的文章之外,它还显示所有资源中所有类别中的文章。
有没有一种方法只能在给定资源上显示特定类别的文章?
TLDR: 一个抽象模型-> 3个扩展该模型的资源(定义了类别属性)->如何仅在nova资源中显示该类别中的项目?
您可以利用Laravel雄辩的查询范围。
像下面添加全球范围扩大到所有3种型号(App\Models\News\Article,App\Models\Digests\Article,App\Models\Offtopic\Article),这是一种简单的方法,以确保每个查询对于给定的模型接收类别约束。
protected static function boot()
{
parent::boot();
static::addGlobalScope('category', function (Builder $builder) {
$builder->where('category', 'news'); // Change the value depends on the model
});
}
Run Code Online (Sandbox Code Playgroud)
希望这会帮助你。
| 归档时间: |
|
| 查看次数: |
568 次 |
| 最近记录: |