Во-первых, посмотрев на ваши столы по order_item , order_id и inventory_id наверняка будут звонить в один и тот же магазин?Я думаю, да, потому что если бы не вы, у вас было бы 2 разных магазина с одинаковым верхним порядком.Я не знаю, почему вы делаете это так, но это немного сбивает с толку, не могу понять, почему, но я бы попробовал это:
public function topOrders()
{
$items = DB::table('shops')
->join('orders', 'shops.id', '=', 'orders.shop_id')
->join('inventories', 'shops.id', '=', 'inventories.shop_id')
->join('order_items', 'orders.id', '=', 'order_items.order_id')
->orderBy('quantity', 'desc')
->take(5)
->get();
return $items;
}
То, что я написал, должно выбрать все из всех 3 строк, если вы хотитечтобы выбрать только те элементы, которые вы хотите выбрать, вы можете указать их, добавив предложение select