我试图在Laravel内部创建一个类似博客系统的东西。
我有一个名为articles的表以及抽象模型AbstractArctile。
我还有三大类:
App\Models\News\Article扩展App\Models\Abstract\AbstractArticleApp\Models\Digests\Article扩展App\Models\Abstract\AbstractArticleApp\Models\Offtopic\Article扩展App\Models\Abstract\AbstractArticle表articles有一个名为分类的字段,有3种类型:新闻、摘要、主题之外。
除了扩展抽象模型之外,每个资源模型还定义了一个属性,即按以下方式定义的类别:
/**
* To which category this article belongs to
* @var array
*/
protected $attributes = [
'category' => 'news'
];我在Nova中创建指定类别下的文章没有问题,但是,它没有显示来自指定类别的文章,而是在所有资源上显示来自所有类别的文章。
是否有一种方法仅在给定资源上显示特定类别的文章?
摘要
一个抽象模型-> 3资源扩展了该模型(定义了类别属性) ->,如何在nova资源中仅显示来自该类别的项?
发布于 2018-12-14 16:54:52
你可以利用拉拉维尔雄辩的查询范围。
向所有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
});
}希望这能帮到你。
发布于 2022-06-08 12:04:12
在Nova中,您也可以使用indexQuery、detailQuery和editQuery,并自定义资源结果。
https://nova.laravel.com/docs/4.0/resources/authorization.html#index-filtering
https://stackoverflow.com/questions/53780906
复制相似问题