复杂的子查询统计在 ORM 中怎么优雅的写出来
//获取今日收礼的礼物钻石价值
public function getCharm($member_id)
{
// RoomGiftRecord::query()
// ->whereRaw("")
$sql = <<<eof
SELECT SUM(diamonds) as diamonds_sum FROM (
SELECT gift_id,
(SELECT diamonds FROM goods_gift where goods_gift.id = room_gift_record.gift_id) as diamonds
FROM room_gift_record WHERE member_id=?
) as t
eof;
$data = DB::select($sql, [$member_id]);
return $data[0]->diamonds_sum;
}
这么复杂的子查询在orm中能优雅的写出来吗~
先说说问题,表设计错误,这类数据应当冗余在记录表内,形成数据差异化。 你的表和字段都没有告知,仅凭你贴出来的代码,完完全全就是简单的一对多,with或load使用select然后再使用DB::raw就可以使用原生聚合函数了