【发布时间】:2020-12-15 17:59:26
【问题描述】:
我一直试图通过文档和多次尝试来解决这个问题,但我无法解决这个非常简单的问题。我正在使用 Laravel 7。
我有 3 张桌子。
模型之间的关系设置为 Training hasMany Episodes。我的完成表有 user_id、episode_id,因为它是多对多关系,可以显示用户观看了哪一集。
培训表:id、标题、描述
剧集表:id、title、episode_number、description、video_url、training_id (foreign_key)
完成表:id、user_id、episode_id
在我的索引视图中,我对每次培训都进行了分析,并且我想显示有多少用户观看了至少 1 集。我试图急切加载培训的情节表,然后我想加入完成表,然后我想按 user_id 分组并计算它们,但它根本不起作用......请帮忙? :)
我试过的代码:
$trainings = Training::with('user')->with(['episodes' => function ($query) {
$query->join('completions', 'episodes.id', '=', 'completions.episode_id')
->join('users', 'completions.user_id', '=', 'users.id')
->select('completions.*, episodes.*', DB::raw('COUNT(completions.user_id) as totalctn'))
->groupBy('completions.user_id');
}])->latest()->get();
非常感谢您阅读/帮助我!
【问题讨论】:
标签: mysql laravel join eloquent eager-loading