【发布时间】:2019-01-16 09:56:11
【问题描述】:
在我的表中有一个包含JSON 编码数据的列,其中一条记录看起来像这样
{"late_fee":10,
"due_date":"2019-10-01 00:00:00",
"property_type":"house"
}
从数据库中获取数据时,我需要在 JSON 数据列中不存在键 late_fee 的记录。如何将其置于where 条件下?
这是我必须添加上述条件的代码行:
$payments = Rent::where('property_id', $property['id']);`
编辑
通过您发布的cmets,您能否确认我这是正确的方式:
$payments = Rent::where('property_id', $property['id'])->whereJsonContains('notification_settings->late_fee', null);
附: notification_settings 是存储JSON 数据的列的名称。
【问题讨论】:
-
哪个版本的 MySQL?请始终相应地标记问题。
-
Mysql: '5.7.24-0ubuntu0.16.04.1' Php: 5.6
-
使用
whereRaw使用JSON_EXTRACT获取late_fee并将值与IS NULL进行比较。 -
@emix 谢谢,我可以请你检查我的编辑,如果这不是正确的方法,请写下你的答案?
-
是的,它必须有效。