还在和Laravel一起学习,而且我正在与Eloquent挣扎。
我有这两个表,用户和内容。外键content.user_id已正确设置,我想查询两件事:
我提出了一个Eloquent查询,但我找不到任何东西。
答案 0 :(得分:1)
从我能够讲述的内容来看,你不能从相关对象中约束根对象的结果。我的意思是,您不能根据内容结果限制提取的用户。考虑到这一点,您需要从另一方Content
处理这些查询。
Content::groupBy('user_id')
->orderByRaw('count(`posts`.`id`) desc')
->first()->user;
这应该生成以下2个查询:
SELECT *
FROM `contents`
GROUP BY `user_id`
ORDER by count(`posts`.`id`) DESC
LIMIT 1
SELECT * FROM `users` WHERE `users`.`id` = ? LIMIT 1
基于时间限制也很容易:
$date = (new DateTime('-1 month'))->format('Y-m-d H:i:s');
Content::where('created_at', '>=', $date)
->groupBy('user_id')
->orderByRaw('count(`posts`.`id`) desc')
->first()->user;