laravel-5 - 我如何编写此查询。不想用 Eloquent
问题描述
请问谁能告诉我查询?我将 Laravel 5.7 与 mysql 一起使用。
我的表:
用户
- ID
- 姓名
食谱
- ID
- 用户身份
- 姓名
口味
- 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();
解决方案
如果我正确理解你的问题,你想要给定用户的所有食谱。
如果我看一下您的查询,您是从数据透视表开始的,我认为这不是正确的方法。此外,您永远不会声明将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();
我希望这对你有用。让我知道这是否不是您需要的。
推荐阅读
- javascript - 如何动态计算折扣html/js
- woocommerce - What's the difference between price, sale_price and regular_price?
- halcon - 如何在 HALCON 中选择最大的区域?
- android - 复制文件后,Nativescript Angular android 应用程序无法从私有应用程序文件夹中读取文件
- c - 在 switch、循环或 if 语句中 c 中的 fgets() 输入有什么问题?
- javascript - Android 键盘重叠输入
- python - 在 yolo tensrflow 模型上获得低 fps(13)
- python - 如何根据条件根据另一个相同长度的嵌套列表将列表中的项目替换为空字符串
- javascript - 当我的购物车只包含一件商品时,Ajax 没有响应
- powershell - 无法为 Haskell 安装 QuickCheck:“runInteractiveProcess:权限被拒绝”