Laravel在Json对象数组列中搜索日期大于今天的列



我有Json列,它存储的数据如下:

[
{"date": "2021-02-24"},
{"date": "2021-02-20"}, 
{"date": "2021-04-22"},
]

我想得到今天之后的数据,我发现最接近的是:

$dates = Foo::whereJsonContains('dates', ["date => '2021-04-22']);

但这将按确切日期搜索,如何按更大的搜索范围搜索,就像我们在正常情况下所做的那样:

$dates = Foo::where('date', '>', Carbon::now());

是的,可以直接从数据库中完成,但这并不容易。

例如,您可以从数据中提取json数据,以获得具有的数组

SELECT JSON_EXTRACT(your_field, '$[*].date') AS dates

在这里,您将获得作为字符串数组的dates,并且您必须将每个字符串强制转换为日期,并将它们与明天的日期进行比较。

一旦能够做到这一点,就可以在DB::raw()中传递sql命令

最新更新