gpt4 book ai didi

php - 在 Laravel Nova 中为不同的资源使用一张表

转载 作者:行者123 更新时间:2023-12-05 09:14:37 24 4
gpt4 key购买 nike

我正在尝试在 Laravel Nova 中创建类似博客系统的东西。

我有一个名为 articles 的表以及一个抽象模型 AbstractArctile
我也有 3 个类别:

  • 新闻 - App\Models\News\Article 扩展 App\Models\Abstract\AbstractArticle
  • Digests - App\Models\Digests\Article 扩展 App\Models\Abstract\AbstractArticle
  • Offtopic - App\Models\Offtopic\Article 扩展 App\Models\Abstract\AbstractArticle

articles 表有一个名为category 的字段,有 3 种类型的类别:news、digests、offtopic

除了扩展抽象模型之外,每个资源模型还定义了一个属性,即它的类别,如下所示:

/**
* To which category this article belongs to
* @var array
*/
protected $attributes = [
'category' => 'news'
];

我在 Nova 中创建指定类别下的文章没有问题,但是,它不是显示指定类别的文章,而是显示所有资源上所有类别的文章。

有没有办法只显示给定资源上特定类别的文章?

总结

一个抽象模型 -> 扩展该模型的 3 个资源(定义了类别属性) -> 如何在 nova 资源中仅显示该类别的项目?

最佳答案

你可以利用 Laravel Eloquent query scope .

将如下所示的全局范围添加到所有 3 个模型(App\Models\News\ArticleApp\Models\Digests\ArticleApp\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
});
}

希望对您有所帮助。

关于php - 在 Laravel Nova 中为不同的资源使用一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53780906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com