【问题标题】:Column not found: 1054 Unknown column 'MONTH(date)' in 'where clause' [duplicate]未找到列:1054“where 子句”中的未知列“MONTH(date)”[重复]
【发布时间】: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)

【问题讨论】:

    标签: php html sql laravel


    【解决方案1】:

    如图here

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

    改变这个:

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

    为此:

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

    查看文档以了解此方法here

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

    【讨论】:

    • 谢谢,这是一个很好的答案,但使用 whereMonth() 和 whereYear() 更简单
    • 谢谢!我已经更新了我的答案。
    猜你喜欢
    • 2021-05-06
    • 2020-03-17
    • 2020-03-01
    • 2020-07-23
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多