【问题标题】:Convert raw query into laravel eloquent将原始查询转换为 laravel eloquent
【发布时间】:2019-04-29 09:31:45
【问题描述】:

我已经编写并作为原始 SQL 查询工作,但我正试图将其转换为更 Laravel 雄辩/查询构建器设计,而不仅仅是原始查询。

我的表结构是这样的:

Table One (Name model)
______________
| id  | name |
|------------|
| 1   | bob  |
| 2   | jane |
--------------

Table Two (Date Model)
_________________________________
| id  | table_1_id | date       |
|-------------------------------|
| 1   | 1          | 2000-01-01 |
| 2   | 1          | 2000-01-31 |
| 4   | 1          | 2000-02-28 |
| 5   | 1          | 2000-03-03 |
| 6   | 2          | 2000-01-03 |
| 7   | 2          | 2000-01-05 |
---------------------------------

我只返回表 2(日期模型)中与表 1(名称模型)中的用户 bob 匹配的最高(最近)日期。

例如,在上面的示例中,我从查询中返回了这个

2000-01-31

2000-02-28

2000-03-03

这是我现在正在做的事情(有效),但我只是不确定如何将 YEARMONTHMAX 与 laravel 一起使用。

DB::select(
  DB::raw("
    SELECT MAX(date) as max_date
    FROM table_2
    INNER JOIN table_1 ON table_1.id = table_2.table_1_id
    WHERE table_1.name = 'bob'
    GROUP BY YEAR(date), MONTH(date)
    ORDER BY max_date DESC
  ")
);

【问题讨论】:

    标签: laravel eloquent laravel-query-builder


    【解决方案1】:

    如果有任何问题,请尝试此代码,

    DB::table('table_1')->join('table_2', 'table_1.id','=','table_2.table_1_id')
        ->select(DB::raw('MAX(date) as max_date'),DB::raw('YEAR(date) year, MONTH(date) month'),'table_1.name')
        ->where('name','bob')
        ->groupBy('year','month')
        ->orderBy('max_date')
        ->get();
    

    如果上述代码有任何问题,请随时提出。

    【讨论】:

      猜你喜欢
      • 2016-04-27
      • 2019-05-31
      • 2018-09-12
      • 2019-04-04
      • 2021-09-11
      • 2018-01-04
      • 2017-10-21
      • 1970-01-01
      • 2015-06-26
      相关资源
      最近更新 更多