首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询3个表mysql Laravel

查询3个表mysql Laravel
EN

Stack Overflow用户
提问于 2013-06-20 19:33:01
回答 2查看 609关注 0票数 1

我有几张桌子。

  • 竞赛
  • 条目
  • 用户

用户可以向竞赛提交条目,用户可以向竞赛提交多个条目。

我需要知道的电子邮件的用户,提交了一个特定的竞赛条目。电子邮件在用户表中。

从比赛中获得所有参赛作品并不难,我要做到这一点:

代码语言:javascript
复制
$entries = Contest::find(1)->entries()->first();

现在,我有了属于竞赛的所有条目,id为1(例如,使用)。现在,如何以有效的方式从我的用户表中获取所有用户电子邮件?

所以三个表是链接的,我从竞赛开始,然后从比赛中得到所有的条目,然后需要得到我还没有得到的所有的用户电子邮件。

希望这是有意义的。如果没有,那就问吧!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-23 21:59:24

代码语言:javascript
复制
$getUser = Contest::find(1)->users()->get();
$getEmails = $getUser->email;

foreach($getEmails as $getEmail)
    echo $getEmail;

您将获得与emails id 1相对应的所有用户contest,但首先必须在model中执行数据库关系才能使其正常工作。

票数 1
EN

Stack Overflow用户

发布于 2013-06-20 19:42:28

在这种情况下使用查询生成器可能更容易,而不是雄辩的:

代码语言:javascript
复制
// 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');

在拉拉维尔,雄辩并不总是一切最好的决定。有时候查询生成器更好/更容易。对于简单的功能和关系,雄辩更方便。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17222281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档