我有多个表
- 比赛 <
- 条目/gh>用户
用户可以向竞赛提交参赛作品,一个用户可以向竞赛提交多个参赛作品
我需要知道提交了一个特定的比赛条目的用户的电子邮件。电子邮件在用户表中
从比赛中获得所有参赛作品并不难,我通过以下方式完成:
$entries = Contest::find(1)->entries()->first();
现在我有所有属于比赛的id为1的条目(例如使用)。现在,如何有效地从users表中获取所有用户的电子邮件呢?
这是三个链接的表,我从竞赛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更方便。
$getUser = Contest::find(1)->users()->get();
$getEmails = $getUser->email;
foreach($getEmails as $getEmail)
echo $getEmail;
您将获得与contest
id 1对应的所有用户emails
。但首先你必须做的数据库关系在model
得到这个工作。