【问题标题】:Get data from JSON column in MySql database从 MySql 数据库中的 JSON 列获取数据
【发布时间】: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 谢谢,我可以请你检查我的编辑,如果这不是正确的方法,请写下你的答案?
  • 是的,它必须有效。

标签: php laravel


【解决方案1】:

请阅读这篇短文: https://laravel.com/docs/5.7/queries#json-where-clauses

应该可以:

$payments = Rent::where('property_id', $property['id'])->whereJsonContains('notification_settings->late_fee', null);

【讨论】:

  • 你应该在评论中提到这一点。
  • 谢谢,这应该是评论
  • 在那之后尝试帮助人们:)
  • 这是一个很好的答案,不知道为什么很多人反对,也许你之前已经发布了 1 行答案
猜你喜欢
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-07-07
相关资源
最近更新 更多