You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel:如何通过Eloquent关联关系查询带订单数的用户

实现方法

Laravel 提供了withCount方法专门用于关联模型的数量统计,无需手动编写关联查询逻辑,具体用法如下:

基础用法

查询所有用户数据,同时返回每个用户关联的订单总数:

$users = \App\Models\User::withCount('orders')->get();

执行查询后,每个用户实例会自动生成orders_count属性,直接访问即可获取对应用户的订单数量:

// 遍历输出
foreach ($users as $user) {
    echo $user->orders_count;
}

带条件的统计

如果需要统计满足特定条件的订单(比如已支付的订单),可以给withCount传入闭包添加查询条件:

$users = \App\Models\User::withCount([
    'orders' => function ($query) {
        $query->where('pay_status', 1); // 只统计支付成功的订单
    }
])->get();

基于统计字段排序

可以直接用生成的orders_count字段对查询结果排序,比如按订单量从高到低返回用户:

$users = \App\Models\User::withCount('orders')
    ->orderBy('orders_count', 'desc')
    ->get();

单个用户查询

查询单个用户时也可以用同样的方法获取订单数:

$user = \App\Models\User::withCount('orders')->find($userId);
echo $user->orders_count;

内容的提问来源于stack exchange,提问作者Manole Răzvan Ionuț

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:27:03