未找到列: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 在执行查询之前会准备好查询,因此您可以使用 whereMonth
和 whereYear
方法告诉 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'我找不到错误