【发布时间】:2021-08-22 12:13:59
【问题描述】:
我正在尝试使用 Eloquent 查询数据库中的记录表,并仅检索 json 列中至少有 1 条记录(由对象数组组成)在给定日期范围内的记录。
日期列如下所示:
[
{'date': '2021-01-01'},
{'date': '2021-01-02'},
{'date': '2021-01-03'},
]
如果我通过了“2021-01-01”的开始日期,则它需要获取 dates.*.date 等于或晚于该开始日期的所有记录。
结束日期也是如此。
我有不同类型的语法,例如:
$this->where('dates->[*]->date', '<=', date($value));
$this->where('dates->*->date', '<=', date($value));
$this->where('dates.*.date', '<=', date($value));
似乎没有任何效果。
我做错了什么?
【问题讨论】:
-
您使用的是哪个 MySql 版本?在 8.x 中,您可以使用 JSON_TABLE 函数将日期数组提取到表中并对其执行查询
-
如果没有任何效果,只需通过 PHP 完成。您可以创建日期索引,然后与之匹配
标签: php mysql json laravel eloquent