使用雄辩的方式选择具有多对多关系的模型时,它非常简单,例如:
$orders = Order::with('products')->whereHas('products', function($query){
$query->where('id', '=', 1);
});
此查询将返回每个订单中产品带有id = 1
的所有订单。当订单中有很多产品时,如果订单中的产品带有id = 1
,则查询将返回所有产品,
但是当使用查询生成器返回与雄辩的结果相同时,对于每个订单,仅返回一个带有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
,如何获取每个订单的所有商品?