【问题标题】:How i write this Query. Want not use Eloquent我如何编写此查询。不想用 Eloquent
【发布时间】:2019-02-21 20:45:06
【问题描述】:

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

我的表:

用户

  • 身份证
  • 姓名

食谱

  • 身份证
  • user_id
  • 姓名

口味

  • 身份证
  • 姓名

flavour_recipe(枢轴)

  • flavour_id
  • recipe_id

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

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

我如何从给定用户那里获取所有食谱(带有他的口味)? 我想使用 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();

【问题讨论】:

  • 这不是问题。 SO 不是编程服务。请在你的问题上多加努力。自己尝试一些东西,向我们展示你尝试过的东西。尝试阅读 Laravel Query Builder laravel.com/docs/5.7/queries 上的文档。
  • 我已经添加了我正在尝试的内容...
  • 好的,现在你说它不起作用。你看到任何错误吗?输出是什么?请提供更多信息。

标签: laravel-5 left-join laravel-query-builder


【解决方案1】:

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

如果我查看您的查询,您是从数据透视表开始的,我认为这不是正确的方法。此外,您永远不会声明 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();

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

【讨论】:

  • 很抱歉当时我没有回答,但我有点失望,因为我的问题格式不正确。今天回来看了你的回答。感谢那。那时我在其他地方找到了解决方案。这正是你写的。
  • 没问题。我知道这可能有点令人沮丧。但是,学习是关键。现在你知道下一个问题了。不断提问,不断学习。请通过选择正确答案将问题标记为已回答。谢谢你,祝你好运!
猜你喜欢
  • 2020-01-23
  • 2014-10-13
  • 2018-09-13
  • 1970-01-01
  • 2011-02-20
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
相关资源
最近更新 更多