我有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命令