Laravel按相关表的计数顺序

时间:2014-12-23 16:48:31

标签: php mysql laravel eloquent

我有一个模型RestaurantRestaurant有一个或多个Order。如何获得订单最多的顶级餐厅?让我们说前5名。

我不太确定如何使用雄辩的模型来实现这一目标。

编辑:

使用原始查询我可以找到要构建的正确查询。

SELECT 
    R.name, count(O.id) as total
FROM restaurants AS R
LEFT JOIN orders as O ON R.id = O.restaurant_id
GROUP BY R.id
ORDER BY total DESC

但我不知道如何使用Fluent

创建此内容

看起来我找到了我要找的东西:

return Restaurant::select(['*', DB::raw('count(orders.id) as total')])
->leftJoin('orders', 'restaurants.id', '=', 'orders.restaurant_id')
->groupBy('restaurants.id')
->orderBy('total', 'DESC')
->limit(5);

1 个答案:

答案 0 :(得分:0)

我已经在Topic Start中添加了答案。