84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我有两个表:买家和订单。买家有很多订单。
我想要所有买家以及特定时间段内订单数和两列订单(价格、费用)的总和。我可以通过执行以下操作来获取计数,
Buyer::withCount([ 'orders' => fn ($query) => $query ->where('created_at', '>=', $dateTo) ]) ->get();
但是如何获得指定时间段的总和(->where('created_at', '>=', $dateTo))?
->where('created_at', '>=', $dateTo)
以同样的方式,你有 withSum() a>,这是您可以做到的方法
Buyer::withCount([ 'orders' => fn($query) => $query->where('created_at', '>=', $dateTo), ])->withSum([ 'orders' => fn($query) => $query->where('created_at', '>=', $dateTo), ], 'price')->withSum([ 'orders' => fn($query) => $query->where('created_at', '>=', $dateTo), ], 'charge')->get();
要在闭包内使用变量,您需要使用 use() 将其值发送到该函数。
use()
用于使用 withSum({relation},{column}) 你需要为每个单独调用。
withSum({relation},{column})
Buyer::withCount([ 'orders' => function ($query) use ($dateTo) { $query->where('created_at', '>=', $dateTo); } ]) ->withSum([ 'orders' => function ($query) use ($dateTo) { $query->where('created_at', '>=', $dateTo); } ], 'price') ->withSum([ 'orders' => function ($query) use ($dateTo) { $query->where('created_at', '>=', $dateTo); } ], 'charge') ->get();
withSum() 仅在 Laravel 版本 8 或更高版本中可用。
withSum()
编辑箭头函数语法
Buyer::withCount([ 'orders' => fn ($query) $query->where('created_at', '>=', $dateTo), ]) ->withSum(['orders' => fn ($query) $query->where('created_at', '>=', $dateTo)], 'price') ->withSum(['orders' => fn ($query) $query->where('created_at', '>=', $dateTo)], 'charge') ->get();
以同样的方式,你有 withSum() a>,这是您可以做到的方法
要在闭包内使用变量,您需要使用
use()
将其值发送到该函数。用于使用
withSum({relation},{column})
你需要为每个单独调用。withSum()
仅在 Laravel 版本 8 或更高版本中可用。编辑箭头函数语法