【发布时间】:2020-03-19 09:25:36
【问题描述】:
背景
我有 4 个相互嵌套关系的表。
events
contests (foreign key: evt_id)
entries (foreign key: con_id)
entry_winner (foreign key: ent_id)
我能够从 Entry 模型中获得具有此类关系的记录。
$accepted = Entry::where("is_canceled", "=", "0")
->with(["contest.event", "entryWinner"])
->whereHas("contest.event", function($query) {
$query->where('datetime_utc', ">",Carbon::today());
})
->has("entryWinner")
->get();
到目前为止一切顺利。
问题
我想从查询中得到的是查询中的两件事。
- 记录总数(计数)
- 关系表列的总和。 (总和)
这是一个完全适合我的查询。
SELECT
COUNT(*) AS accepted,
SUM(contests.ent_fee) AS funds
FROM entries
LEFT JOIN contests ON contests.id = entries.con_id
RIGHT JOIN `events` ON `events`.id = contests.evt_id AND `events`.datetime_utc > '2019-11-22 00:00:00'
RIGHT JOIN entry_winners ON entry_winners.ent_id = entries.id
WHERE is_canceled = 0;
我只是好奇如何使用 Eloquent 实现这一目标。
如何同时使用 SUM 和 COUNT ??
【问题讨论】:
-
我认为您不能在
with()中获取sum或count,然后将其发布到 Eloquent 的父母专栏。所以只需使用Model::leftjoin()即可。
标签: laravel eloquent eloquent-relationship