При использовании 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
?