doufeng9567 2018-07-08 07:26
浏览 50
已采纳

年级(begin_date)laravel中的未知列

SELECT COUNT(*) as count, MONTH(begin_date)
FROM `events`
WHERE (YEAR(begin_date) = YEAR(CURDATE())) 
      OR (YEAR(begin_date) = YEAR(CURDATE()) + 1)  
GROUP BY MONTH(begin_date)

Here is sql query, i want to write it in laravel eloquent.

what i try:

  $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();

Error:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'YEAR(begin_date)' in 'where clause' (SQL: select count(*) as numOfOncomingEvents, MONTH(begin_date) from events where YEAR(begin_date) =

laravel 5.6

btw sql query works..

  • 写回答

1条回答 默认 最新

  • dotif64826 2018-07-08 07:38
    关注

    You need to use DB::raw() in where to tell the query builder that it is not column name it is data manipulation in query,

    $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();

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部