将MariaDB语句转换为Laravel4 Eloquent-Query

时间:2014-12-26 19:40:40

标签: laravel-4 eloquent mariadb

我想将MariaDB语句转换为Eloquent查询。 SQL语句工作得很好,但不幸的是,Eloquent部分不是。

SQL语句(MariaDB)

  

SELECT matchday_id,MAX(ADDDATE(date,INTERVAL 105 MINUTE))AS matchday_end
  来自比赛
  GROUP BY matchday_id
  HAVING MAX(日期)<现在();

Eloquent-Query(Laravel 4)

  

$ ended_matchdays = DB :: table('匹配')
   - > selectRaw(' matchday_id,MAX(ADDDATE(日期,间隔105分钟))作为matchday_end')
   - > GROUPBY(' matchday_id')
   - >有(' MAX(日期)','<&#;;' NOW()')
   - >得到();

错误讯息(Laravel 4)

  

SQLSTATE [42S22]:未找到列:1054未知列' MAX(日期)'在'有条款' (SQL:选择matchday_id,MAX(ADDDATE(日期,间隔105分钟))作为matches组的结尾matchday_id MAX(date)< NOW())

我真的不知道,为什么这不起作用,也许 - 就像有时候 - 一个微不足道的错误,我不会看到...... 希望你们能帮我一个人!

2 个答案:

答案 0 :(得分:2)

->having('MAX(date)', '<', 'NOW()')

需要成为:

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

答案 1 :(得分:0)

我现在就开始工作了。
这是(对我来说)工作代码:

  

- &gt;拥有(DB :: raw(&#39; MAX(日期)&#39;),&#39;&lt;&#;;,Carbon :: now())

我试图只包装MAX(日期)部分,以及DB :: raw()中的整行,但两者都没有工作。

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

谢谢!