我如何编写此查询。不想用Eloquent

How i write this Query. Want not use Eloquent

谁能告诉我查询?我使用 Laravel 5.7 和 mysql.

我的表格:

用户

食谱

口味

flavour_recipe(枢轴)

-一个用户可以拥有多个食谱(一对多)

-一个食谱可以有多种口味,一种口味可以出现在很多食谱中。(多对多)

我如何从给定用户那里获得所有食谱(带有他的口味)? 我想使用 Laravel Querybuilder,而不是 Eloquent。

我正在尝试这个,但它不起作用:

$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();

如果我对你的问题的理解正确,你想要给定用户的所有食谱。

如果我看一下您的查询,您是从枢轴 table 开始的,我认为这不是正确的方法。此外,您永远不会声明 WHERE 子句以将其限制为特定用户。

循序渐进。您想为特定用户获取所有内容,所以让我们从用户 table

开始
$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();

我希望这对你有用。如果这不是您需要的,请告诉我。