【问题标题】:YEAR(begin_date) unknown column in laravelLaravel 中的 YEAR(begin_date) 未知列
【发布时间】:2018-12-16 10:11:55
【问题描述】:
选择 COUNT(*) 作为计数,MONTH(begin_date)
从`事件`
WHERE (YEAR(begin_date) = YEAR(CURDATE()))
      或 (YEAR(begin_date) = YEAR(CURDATE()) + 1)
按月分组(开始日期)

这里是sql查询,我想用laravel eloquent写一下。

我尝试了什么:

$oncoming_events = DB::table('events') ->select(DB::raw('count(*) as numOfOncomingEvents, MONTH(begin_date)')) ->where('YEAR(begin_date)', '=', 'YEAR(CURDATE())') ->orWhere('YEAR(begin_date)', '=', 'YEAR(CURDATE()) +1') ->groupBy('MONTH(begin_date)')->get();

错误:

SQLSTATE[42S22]: 未找到列: 1054 'where 子句'中的未知列'YEAR(begin_date)' (SQL: select count(*) as numOfOncomingEvents, MONTH(begin_date) from events where YEAR(begin_date) =

laravel 5.6

顺便说一句 sql查询有效..

【问题讨论】:

  • 你可以使用whereYear('begin_date', date('Y'))
  • 什么是日期('Y')?
  • 返回当前年份

标签: php laravel


【解决方案1】:

您需要在 where 中使用 DB::raw() 告诉查询生成器它不是列名而是查询中的数据操作,

$oncoming_events = DB::table('events')->select(DB::raw('count(*) as numOfOncomingEvents, MONTH(begin_date)'))->where(DB::raw('YEAR(begin_date)'), '=', 'YEAR(CURDATE())')->orWhere(DB::raw('YEAR(begin_date)'), '=', 'YEAR(CURDATE()) +1')->groupBy(DB::raw('MONTH(begin_date)'))->get();

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 2015-02-22
    • 2018-05-02
    • 2017-12-10
    • 2013-04-09
    • 1970-01-01
    相关资源
    最近更新 更多