php - Laravel Eloquent WhereBetween 与逗号分隔的时间戳?
问题描述
鉴于上图......使用 Laravel 的 Eloquent - 我如何查找特定日期范围以返回该范围内的行?
我知道 Laravel 有一个 whereBetween 函数可以处理传统的日期字段,但由于这些是时间戳,我意识到我必须使用类似的东西where('dates', '>=', $startTimestamp)
,where('dates', '<=', $endTimestamp)
但我还必须将它应用于从柱子?
谢谢你们的帮助!
解决方案
尽管它可能是糟糕的数据库设置,但有时事情只需要按照目前的方式完成——出于业务原因或迟到或其他原因;一个难看的修复可能比全面大修更好 - 特别是在系统很小并且将保持很小的情况下,不需要过度考虑处理速度。
这是提出问题的解决方案,利用 MySQL 表连接,从该连接响应中进行选择。这也是用 Laravel 编写的,因此是 DB 静态函数。
$temp = DB::select(DB::raw("select
leave_entries.id,
SUBSTRING_INDEX(SUBSTRING_INDEX(leave_entries.dates, ',', numbers.n), ',', -1) dates
from
(select 1 n union all
select 2 union all select 3 union all
select 4 union all select 5) numbers INNER JOIN leave_entries
on CHAR_LENGTH(leave_entries.dates)
-CHAR_LENGTH(REPLACE(leave_entries.dates, ',', ''))>=numbers.n-1
where uid = {$uid}
AND dates >= {$start_timestamp}
AND dates <= {$end_timestamp}
order by
id, n"));
// Return the resulting table:
dd($temp);
将其留在这里而不是删除问题,因为它可能对某人有所帮助。
未来的人:在你的情况下 - 如果你可以重做数据库模式,就像我对我的问题的评论所建议的那样,那么就这样做。
推荐阅读
- php - 如何链接到页面的特定部分 HTML PHP
- c# - 当后端代码中的简单键值变量工作相同时,为什么要使用 redis 作为缓存层?
- google-apps-script - Google Slides Apps 脚本检索页面中的形状
- python-3.x - 在 KNeighborsClassifier 中使用自定义指标时,我不断收到“TypeError:只有整数标量数组可以转换为标量索引”
- java - JavaFX - 在使用选项卡时将 GUI 拆分为单独的类
- jquery - 通过函数调整电子窗口大小
- scheme - 匹配方案中的括号
- android - 当我使用 adb 显示 /sys/kernel/debug/tracing/available_filter_functions 时没有这样的设备
- python - 初始化以迭代抽象pyomo模型中的集合?
- angular-cli - 运行 ng serve -o 时出现错误