请问有人可以告诉我该查询吗?我在MySQL上使用Laravel 5.7。
我的桌子:
-一个用户可以有很多食谱(一对多)
-食谱可以具有多种风味,多种食谱中也可以具有风味。(多对多)
我如何从给定的用户那里获得所有食谱(包括他的口味)? 我想使用Laravel Querybuilder,而不是雄辩的。
我正在尝试此操作,但是它不起作用:
$allRecipesFromUserX = DB::table('flavour_recipe')
->join('flavours', 'flavours.id', '=', 'flavour_recipe.flavour_id')
->join('recipes', 'recipes.id', '=', 'flavour_recipe.recipe_id')
->join('users', 'users.id', '=', 'recipes.id')
->get();
答案 0 :(得分:0)
如果我正确理解了您的问题,则需要给定用户的所有食谱。
如果我看看您的查询,您是从数据透视表开始的,我认为这不是正确的方法。另外,您永远不要声明WHERE
子句以将其限制为特定用户。
逐步进行。您想获取特定用户的所有内容,因此让我们从User表开始
$allRecipesForUser = DB::table('users')->where('id', $id)->get();
用户可以有很多食谱
$allRecipesForUser = DB::table('users')
->join('recipes', 'users.id', '=', 'recipes.user_id')
->where('id', $id)
->get();
一个食谱可以有多种口味,而多种食谱中可以包含某种口味
$allRecipesForUser = DB::table('users')
->join('recipes', 'users.id', '=', 'recipes.user_id')
->join('flavour_recipe', 'recipes.id', '=', 'flavour_recipe.recipe_id')
->join('flavours', 'flavours.id', '=', 'flavour_recipe.flavour_id')
->where('users.id', $id)
->get();
我希望这对您有用。让我知道这是否不是您所需要的。