我有类别和文章表,它们处于多对多的关系中。我在模型上建立了关系。
如何获取类别ID为1的所有文章?
我试过了:
Article::whereHas('category', function ($query) use ($id) {
$query->where('category_id', $id);
})->get();
上述作品,但看起来很笨重,是否有更有效的方式来雄辩地做到这一点?
答案 0 :(得分:0)
您可以使用预先加载技术。
anim.reset();
答案 1 :(得分:0)
以下groupBy代码假设Category::find($id)->articles
无论出于何种原因都不是一个选项。
groupBy怎么样?
Article::groupBy('category')
->having('category', $id)
->get();
答案 2 :(得分:0)
whereHas
将返回符合该条件的文章,但不会过滤由相同条件提取的文章。因此,您可以创建一个包含约束的匿名函数,并将其传递给两者 whereHas
和with
方法:
$filter = function ($query) use ($categoryId) {
$query->where('category_id', '=', $categoryId);
};
Article::whereHas('category', $filter)
->with(['category' => $filter])
->get();