Laravel Eloquent whereHas. Несколько знчений в условии

Нужно отобрать склады, на которых есть все товары из списка. Сейчас так (не очень красиво):

$storehouses=Storehouse::where('storehouses.user_id',$storeHouseUserId);
foreach($items as $productId)
{
   $storehouses=$storehouses->whereHas('products', function ($q) use ($productId)
        {$q->where('product_id',$productId);});
}
$result=$storehouses->orderByDesc('storehouses.extra_time_ship')->get();

Подскажите, пожалуйста, как облагородить этот кусок кода? Без использования цикла. Код дает нужный результат.


Ответы (1 шт):

Автор решения: Maxim

Я думаю как то так, можно добиться тогоже без цикла

$storehouses = Storehouse::where('storehouses.user_id', $storeHouseUserId)
    ->whereHas('products', function ($query) use ($items) {
        $query->whereIn('product_id', $items);
    })
    ->orderByDesc('storehouses.extra_time_ship')
    ->get();
→ Ссылка