laravel - 在开始日期之后获取数据 laravel
问题描述
我正在使用以下查询来获取start date
和之间存在的记录end date
:
$event =Event::whereBetween('date', [
$request->start_date, $request->end_date
])->orderBy('date', 'desc')->paginate(5);
这在我提供开始日期和结束日期时有效,但是当我只提供开始日期时,我没有得到任何记录——但如果结束日期保持空白,我希望记录在开始日期之后存在。
有什么建议么?
解决方案
Laravel为这个用例提供了条件子句
$events = Event::query()
->when(
$request->has('start_date') && $request->has('end_date'),
function($query, $request) {
return $query->whereBetween('date', [
$request->start_date, $request->end_date
]);
},
function($query, $request) {
return $query->where('date', ' >=', $request->start_date);
}
)
->orderBy('date', 'desc')
->paginate(5);
推荐阅读
- javascript - 当我试图获取 HTML 元素的属性值时没有返回
- python - 需要帮助尝试简化此算法以将任意大的 2d 平面上的点映射到唯一整数
- r - 使用形状文件下载 R 中国家/地区的 MODIS 产品数据
- css - 在网格容器中清空无法解释的(不需要的)空间
- html - 即时更新表单字段 - Django
- sql - 找不到列或没有为查询指定列 - Progress SQL 接口
- git - 从存储库的分支引导
- docker - GitHub Actions 缓存是否检测到基础 Docker 映像中的更改?
- python - 坐标处的采样值
- node.js - Firebase Realtime - 删除不存在的节点不会失败