php - 查询 3 个表 mysql Laravel

标签 php mysql relational-database laravel laravel-3

我有多个表。

  • 比赛
  • 参赛作品
  • 用户

用户可以提交参赛作品参加比赛,一个用户可以提交多个参赛作品参加比赛。

我需要知道提交特定比赛条目的用户的电子邮件。电子邮件在用户表中。

从比赛中获得所有参赛作品并不难,我通过以下方式实现:

$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/

相关文章:

javascript - HTML 表单无法发送到 PHP 文件

php - 仅向某些浏览器显示特定格式

php - 保护具有数据库写权限的文件

PHP MySQL数据库问题

php - 使用子查询的 MySQL UPDATE 查询

数据库设计 - 不同表的多个 "Contact information"

php - 数据库中的数字拒绝相加/相乘

javascript - 将返回的 PHP 数据转换为 JavaScript 对象

mysql - 映射到另一个表(其实际值保存在 MySQL 中)的表的效率

Oracle XML DB 和 Java 持久性 API