【问题标题】:Converting a MariaDB-Statement into a Laravel4 Eloquent-Query将 MariaDB 语句转换为 Laravel4 Eloquent-Query
【发布时间】:2015-02-24 00:09:39
【问题描述】:

我想将 MariaDB 语句转换为 Eloquent 查询。 SQL 语句运行良好,但遗憾的是 Eloquent 部分不是。

SQL 语句 (MariaDB)

选择 matchday_id, MAX(ADDDATE(date, INTERVAL 105 MINUTE)) 作为 matchday_end
FROM 匹配
GROUP BY matchday_id
HAVING MAX(date)

雄辩的查询(Laravel 4)

$ended_matchdays = DB::table('matches')
->selectRaw('matchday_id, MAX(ADDDATE(date, INTERVAL 105 MINUTE)) as matchday_end')
->groupBy('matchday_id')
->拥有('MAX(日期)', ' ->get();

错误信息 (Laravel 4)

SQLSTATE[42S22]: 未找到列: 1054 未知列 'MAX(date)' in 'having clause' (SQL: select matchday_id, MAX(ADDDATE(date, INTERVAL 105 MINUTE)) as end from matches group由matchday_id 拥有MAX(date)

我真的不知道,为什么这不起作用,也许 - 有时 - 一个我看不到的微不足道的错误.. 希望你们能帮我解决这个问题!

【问题讨论】:

    标签: laravel-4 eloquent mariadb


    【解决方案1】:

    我现在可以使用它了。
    这是(对我而言)工作代码:

    ->having(DB::raw('MAX(date)'), '

    我试图只包装 MAX(date) 部分,以及 DB::raw() 中的整行,但两者都不起作用。

    现在我使用 Carbon-Class,它的工作原理就像一个魅力 =)

    谢谢!

    【讨论】:

      【解决方案2】:
      ->having('MAX(date)', '<', 'NOW()')
      

      需要成为:

      ->having(DB::raw('MAX(date)'), '<', 'NOW()')
      

      【讨论】:

      • 我认为您也需要将NOW() 包装在DB::raw() 中。或者只是整个表达式having(DB::raw('MAX(date) &lt; NOW()'))
      猜你喜欢
      • 2016-05-26
      • 1970-01-01
      • 2015-08-19
      • 2017-03-09
      • 1970-01-01
      • 2019-01-21
      • 2021-10-02
      • 2020-05-14
      • 1970-01-01
      相关资源
      最近更新 更多