Laravel - 按月对日期字段建模
Laravel - Model filter date field by month
我有一个方法可以接收"month"和另一个"year"的参数,你可以同时接收或只接收其中一个。
在 仅收到月份的情况下 我想在一个名为 "created_at"[ 的字段中进行查询=23=] 只是在寻找那个字段 date
的 month
目前我使用此代码,但在执行类似操作时却无法正确执行
else if ($request->has('month')) {
$month = $request->input('month');
$currentTimestamp = date_create_from_format('n', $month)->getTimestamp();
$currentDate = date('m', $currentTimestamp);
$filters['updated_at'] = $currentDate;
unset($filters['month']);
}
$cars = Car::where(function($query) use($filters) {
foreach ($filters as $column => $value) {
if ($column === 'updated_at') {
$query->where($column, 'LIKE', '%'.$value.'%');
continue;
}
$query->where($column, 'LIKE', '%'.$value.'%');
}
})->orderBy('updated_at', 'desc')->get();
您可以使用 laravel queryBuilder .
这个想法很简单。构建您的查询并仅在需要时执行它
carQuery = Car::newQuery();
if ($request->has('month') {
carQuery->where('created_at' .. do camparison you want);
}
if ( $request->has('year') {
// add extra query filter
}
cars = carQuery->get();
你可以使用whereMonth方法,像这样:
$cars = Car::whereMonth('created_at', '12')->get();
确定月份值是否存在的示例:
if ($request->has('month')) {
$cars = Car::whereMonth('created_at', $request->input('month'))->get();
}
你应该试试这个:
if ($request->has('month')) {
$month = $request->input('month');
Car::whereRaw('MONTH(created_at) = '.$month)->get();
}
$cars = Car::whereMonth('date', '12')->get();
我有一个方法可以接收"month"和另一个"year"的参数,你可以同时接收或只接收其中一个。
在 仅收到月份的情况下 我想在一个名为 "created_at"[ 的字段中进行查询=23=] 只是在寻找那个字段 date
的 month目前我使用此代码,但在执行类似操作时却无法正确执行
else if ($request->has('month')) {
$month = $request->input('month');
$currentTimestamp = date_create_from_format('n', $month)->getTimestamp();
$currentDate = date('m', $currentTimestamp);
$filters['updated_at'] = $currentDate;
unset($filters['month']);
}
$cars = Car::where(function($query) use($filters) {
foreach ($filters as $column => $value) {
if ($column === 'updated_at') {
$query->where($column, 'LIKE', '%'.$value.'%');
continue;
}
$query->where($column, 'LIKE', '%'.$value.'%');
}
})->orderBy('updated_at', 'desc')->get();
您可以使用 laravel queryBuilder .
这个想法很简单。构建您的查询并仅在需要时执行它
carQuery = Car::newQuery();
if ($request->has('month') {
carQuery->where('created_at' .. do camparison you want);
}
if ( $request->has('year') {
// add extra query filter
}
cars = carQuery->get();
你可以使用whereMonth方法,像这样:
$cars = Car::whereMonth('created_at', '12')->get();
确定月份值是否存在的示例:
if ($request->has('month')) {
$cars = Car::whereMonth('created_at', $request->input('month'))->get();
}
你应该试试这个:
if ($request->has('month')) {
$month = $request->input('month');
Car::whereRaw('MONTH(created_at) = '.$month)->get();
}
$cars = Car::whereMonth('date', '12')->get();