laravel - Laravel Eloquent 在查询日期格式转换中遇到问题
问题描述
我正在使用 laravel 进行查询并返回符合多个条件的所有结果。其中之一是按日期,问题是我以这种格式将日期存储在数据库中:
2021-03-26 12:20:00
并以这种格式显示它们:
2021 年 3 月 26 日
如果您搜索,该项目的要求是:3 月 26 日
退回给定月份和日期的所有项目
这需要在查询本身中完成,因为我还使用分页和其他搜索和 orderBy 条件
我正在使用这个:
{...}
$attrDate = 'appointment.date';
$query->orWhereDate($attrDate, 'LIKE', ["%{$search}%"]);
$query->orderBy('appointment.date', $order)->take($pagination)->skip($skip);
$appointments=$query->get();
{...}
如果我搜索约会日期(2021 年 2 月 26 日 ...)中包含的数字,那将有效
但我也希望能够以字符串格式按月搜索,例如“2021 年 3 月 26 日”或“2021 年 3 月 26 日”,并显示该给定日期的约会。当我尝试这个时,我会在哪里得到错误:
$attrDate = 'appointment.date';
$date_transform= "DATE_FORMAT({$attrDate}, '%F%j,%Y')";
$query->orWhereDate($date_transform, 'LIKE', ["%{$search}%"]);
它返回带有 sql 错误的代码 500 响应。
我不知道该怎么做,因为所有这些都是项目的要求,我无法真正改变它们。我在 Laravel 文档中进行了搜索,但没有找到任何可以帮助我解决此问题的方法。提前致谢。
解决方案
Laravel 也有 eloquent 的方法whereDate / whereMonth / whereDay / whereYear / whereTime
,所以你可以使用它们中的任何一个。
$users = DB::table('users')
->whereMonth('created_at', '12')
->get();
来源:Laravel 文档
推荐阅读
- lisp - car、cdr等的球拍实现
- oracle12c - 如何打开 Oracle Forms/Reports 12c?
- database-design - 防止子实体关系中的属性重复
- php - 使用 youtube-dl 下载 YuoTube 视频的进度条已完成
- javascript - 打开 EDX 无法解码 .weight 文件,内部服务器错误 (XBlock)
- flutter - 颤振)更改键盘工具栏颜色
- azure - Azure 函数和 Azure Cosmos DB 冲突源集成
- javascript - 如何在 GraphQL 中进行突变以创建需要关系的对象
- c++ - 当输入为字符或单词时,不显示“Invalid input”
- python - 将 Python 后端套接字与 Angular 前端连接起来