首页 > 解决方案 > 在 Laravel 中使用日、月或年作为 MYSQL 查询过滤器

问题描述

在我的代码中,我通过接受用户的月份和年份输入来查询数据库。

我已经尝试用普通的 PHP 方式和我可以在网上找到的其他方式编写它,但似乎没有一个有效。这是我目前使用的代码

$salesmonth = $request->input('mn');
$salesyear = $request->input('yr');
$id = Auth::user()->id;
$comm = \DB::table('bakerysales')
    ->where([
        ['customer_id', '=', $id], [MONTH('sales_date'), '=', $salesmonth], [YEAR('sales_date
'), '=', $salesyear]
    ])
    ->get();

return view::make('showCommission')->with('comm', $comm);

我希望查询从与用户选择的月份和年份匹配的行中返回数据

标签: laravel

解决方案


Laravel 附带了一些不同的where 子句来处理日期,例如
whereDate/ whereMonth/ whereDay/ whereYear

这意味着您的控制器方法可能类似于:

$comm = \DB::table('bakerysales')
    ->where('customer_id', auth()->id())
    ->whereMonth('sales_date', $request->input('mn'))
    ->whereYear('sales_date', $request->input('yr'))
    ->get();

return view('showCommission', compact('comm'));

推荐阅读