首页 > 解决方案 > 多对多关系的 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子句?

标签: phplaravellaravel-query-builder

解决方案


推荐阅读