【问题标题】:laravel eloquent relation with 3 tablelaravel 雄辩的关系与 3 表
【发布时间】:2017-04-14 18:01:52
【问题描述】:

您好,我想从 3 个表中查询

用户:

+----+-----------+
| id |   name    |
+----+-----------+
|  1 | Denny     |
|  2 | Agus      |
|  3 | Dini      |
|  4 | Angel     |
+----+-----------+

历史_教育

+----+-----------+-------------+
| id |   userId  | educationId |
+----+-----------+-------------+
|  1 |  1        | 1           |
|  2 |  1        | 2           |
|  3 |  2        | 1           |
|  4 |  2        | 2           |
+----+-----------+-------------+

教育

+----+-----------+----------+
| id |   level   |   Name   |
+----+-----------+----------+
|  1 | 1         |   SD     |
|  2 | 2         |   SMP    |
|  3 | 3         |   SMA    |
|  4 | 4         |   S1     |
+----+-----------+----------+

如何通过 Laravel Eloquent 查询通过 Level DESC 获取最新的用户教育订单 预期:

+----+-----------+----------------------+
| id |   Name    |   Latest_Education   |
+----+-----------+----------------------+
|  1 | Denny     |   SMP                |
|  2 | Agus      |   SMP                |
|  3 | Dini      |    -                 |
|  4 | Angel     |    -                 |
+----+-----------+----------------------+

在普通查询中: select id,name ,(select E.name from education E inner join History_education HE on E.id = HE.education_id where HE.userId =U.id limit 1 order by E.level DESC )latest_education from USER U

如何翻译成laravel eloquent?

【问题讨论】:

    标签: laravel-5


    【解决方案1】:

    快速回答是使用查询生成器 - 您的查询需要稍微修改以匹配您的问题中列出的表名和列:

    $result = DB::table('user')
        ->select([
            'id',
            'name',
            DB::raw("(select E.name from Education E inner join History_Education HE on E.id = HE.educationId where HE.userId = user.id order by E.level DESC limit 1) as latest_education")
        ])
        ->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2017-05-19
      • 1970-01-01
      • 2018-02-19
      • 2017-10-12
      • 1970-01-01
      相关资源
      最近更新 更多