在数据透视表中关系所在的位置查询数据的最简单方法


Easiest way to query data where relationship is in a pivot table?

我有两个表,它们通过一个标准的透视表进行关联。

现在,我只想要那些属于特定类别_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();