【发布时间】:2020-07-16 10:43:46
【问题描述】:
我有一个“日期”字段,它是一个 JSON 字段,以 eloquent 模型投射的数组。
因此,我想过滤比该字段中列出的日期之一更早或更晚的行。我试过这样的东西,但它返回空集合:
$q->where('dates->day', '>=', Carbon::now()->format('Y-m-d'));
有什么想法吗?谢谢!
【问题讨论】:
-
你试过q->whereDate('dates->day', '>=', Carbon::now()->format('Y-m-d')); ?
-
dates中的 JSON 对象包含在一个数组中。如果您使用的是 MySQL,则在使用JSON_CONTAINS时不支持更大或更少的符号。如果您使用{"day": "2020-09-21"}而不是[ {"day": "2020-09-21"} ],您应该会得到预期的结果。 -
@dbf 我做不到,是一个数组
-
那么使用 MySQL 的 SQL 将无法解决这个问题。另一方面,Postgre 使用
jsonb数据类型要好得多。