我有两个表,它们通过一个标准的透视表进行关联。
现在,我只想要那些属于特定类别_id 的文章
我找到了像这样的解决方案
Article::whereHas('categories', function($q) use ($cat_id) { $q->where('category_id', $cat_id); })->get();
这是与Eloquent合作的Laravel 5中最好、最简单的方式吗?
一般来说,是的,这是一种方式,但您也可以为此创建范围,以便更清洁地使用,尤其是在多次使用的情况下。
您可以在Article
模型中添加范围,如下所示:
public function scopeHavingCategory($query, $cat_id)
{
return $query->whereHas('categories', function($q) use ($cat_id) {
$q->where('category_id', $cat_id);
});
}
现在你可以这样使用它:
Article::havingCategory($cat_id)->get();