我有多个表。
- 比赛
- 参赛作品
- 用户
用户可以提交参赛作品参加比赛,一个用户可以提交多个参赛作品参加比赛。
我需要知道提交特定比赛条目的用户的电子邮件。电子邮件在用户表中。
从比赛中获得所有参赛作品并不难,我通过以下方式实现:
$entries = Contest::find(1)->entries()->first();
现在我拥有属于比赛的所有条目,其 id 为 1(例如使用)。现在,如何高效地从我的用户表中获取所有用户电子邮件?
三个链接的表,我从竞赛 ID 开始,然后获取该竞赛的所有条目,然后需要获取我尚未获取的所有用户电子邮件。
希望这是有道理的。如果没有,请离开!
最佳答案
在这种情况下使用 Query Builder 可能比 Eloquent 更容易:
// Get array of users that submitted entries to contest ID 45
$users = DB::table('contests AS c')
->join('entries AS e','e.contest_id','=','c.id')
->join('users AS u','e.user_id','=','u.id')
->where('c.id','=',45) // Contest ID
->get();
//or get an array of emails:
$users = DB::table('contests AS c')
->join('entries AS e','e.contest_id','=','c.id')
->join('users AS u','e.user_id','=','u.id')
->where('c.id','=',45) // Contest ID
->lists('email');
在 Laravel 中,Eloquent 并不总是最好的决定。有时查询生成器更好/更容易。 Eloquent 对于简单的功能和关系更方便。
关于php - 查询 3 个表 mysql Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17222281/