我对Eloquent查询有点困惑。我有2个对象,食谱和配料。食谱可以容纳许多成分。成分可以设置为活动与否。 我想要实现的是运行一个只返回含有活性成分的食谱的查询。因此,如果一个或多个配方的成分设置为无效,我根本不想在配方中使用配方。
我到目前为止所做的是
$recipes = Recipe::with(['ingredients' => function($query){
$query->where('active', 1);
}, 'image', 'user', 'ingredients.unit', 'comments.user'])->where('share', 1)->get();
但这只是没有活跃的成分。
希望有人能指出我正确的方向。
答案 0 :(得分:1)
问题是你正在过滤你的成分,而不是你应该使用whereDoesntHave方法。像这样更改你的代码。
Recipe::where('share', 1)->whereDoesntHave('ingredients' , function($query)
{
$query->where('active', '=', 0);
})->with(['image', 'user', 'ingredients.unit', 'comments.user'])->get();
试一试。 Reference