未找到列:1054“where 子句”中的未知列“MONTH(date)”[重复]

Posted

技术标签:

【中文标题】未找到列:1054“where 子句”中的未知列“MONTH(date)”[重复]【英文标题】:Column not found: 1054 Unknown column 'MONTH(date)' in 'where clause' [duplicate] 【发布时间】:2021-07-10 15:57:15 【问题描述】:

我看不出我的问题是什么,我只是想从我的数据库中的日期列中获取月份和年份,我已经在使用这个查询并且它正在工作,现在它不是我真的不明白。 (laravel 新手)

这是我的控制器:

public function showMonth($month, $year)
    
        $workers = WorkerSalarie::all();

        $worker = WorkerSalarie::select('*')
        ->where('MONTH(date)','=',$month)
        ->where('YEAR(date)','=',$year)
        ->get();

        return view('backoffice.dashboard.show', compact('month', 'year', 'workerss'));

    

这是错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'MONTH(date)' in 'where clause' 
(SQL: select * from `worker_salaries` where `MONTH(date)` = 3 and 
`YEAR(date)` = 2021)

【问题讨论】:

【参考方案1】:

如图here。

由于 Laravel 在执行查询之前会准备好查询,因此您可以使用 whereMonthwhereYear 方法告诉 Laravel 不要逃避您的子句:

改变这个:

->where('MONTH(date)','=',$month)
->where('YEAR(date)','=',$year)

为此:

->whereMonth('date', '=', $month])
->whereYear('date', '=', $year)

查看文档以了解此方法here。

其他(不太干净)选项是使用whereRaw 方法。

【讨论】:

谢谢,这是一个很好的答案,但使用 whereMonth() 和 whereYear() 更简单 谢谢!我已经更新了我的答案。

以上是关于未找到列:1054“where 子句”中的未知列“MONTH(date)”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

错误代码:1054 'where 子句'中的未知列'billId'

#1054 - MySQL 中“where 子句”中的未知列“proximite”

错误代码:1054。“where 子句”中的未知列“sdate”

SQLSTATE [42S22]:找不到列:1054 'where 子句为啥'中的未知列'4'我找不到错误

查询中的错误 (1054):“where 子句”中的未知列“TableValue”

SQLSTATE [42S22]:找不到列:1054 'where 子句'中的未知列'user_id'