php - 多对多关系的 Laravel 查询构建器
问题描述
使用 eloquent 选择具有多对多关系的模型时,非常简单,例如:
$orders = Order::with('products')->whereHas('products', function($query){
$query->where('id', '=', 1);
});
此查询将返回每个订单包含产品的所有订单,其中订单有一个产品id = 1
。当一个订单有很多产品时,如果订单有一个带有 的产品,查询将返回所有产品id = 1
,但是当使用查询构建器返回与 eloquent 相同的结果时,它为每个订单返回一个带有 的产品id = 1
。
这是查询:
DB::table('orders')->join( 'order_product', 'orders.id', '=', 'order_product.order_id' )
->join( 'products', 'products.id', '=', 'order_product.product_id' )
->whereIn('products.id', $this->products);
当订单有产品时如何获取每个订单的所有产品,id = 1
即使使用where
子句?
解决方案
推荐阅读
- javascript - 隐藏和取消隐藏特定元素
- visual-studio-code - 允许来宾到 VS Code Live Share 会话运行 Python 扩展“单元”
- python - Pip 使用 virtualenv 将软件包安装在错误的目录中
- javascript - SyntaxError: JSON.parse: JSON 数据的第 1 行第 1 列的数据意外结束[了解更多]
- java - Spark-Java:如何更改数据集中列的时间戳格式
?
- .net - .net 父级退出后在 linux 上运行分离脚本?
- c# - 在 foreach 中更改值类型的 Unity firebase 错误
- java - AWS JAR 文件不会在目标文件夹中构建
- rust - 在不安全的代码中,可变引用的别名是否正确?
- tfs - TFS 2013 审计获取最新版本命令