【问题标题】:Laravel Eloquent - Working with an array of JSON objectsLaravel Eloquent - 使用 JSON 对象数组
【发布时间】:2019-03-31 03:26:00
【问题描述】:

我的数据库中有一组 JSON 对象(如下图所示)

如何在其中搜索特定值?假设我想要“ends_at”字段等于“2018-11-24 08:00:00”的记录

我尝试过使用

->where('column->starts_at', '2018-11-24 08:00:00')

甚至尝试过

->whereJsonContains('column->starts_at', '2018-11-24 08:00:00').

在模型中,我已将列转换为数组 - 我是否遗漏了什么,或者不能这样做?

【问题讨论】:

  • 也许你可以试试这个:DB::table('your_table')->whereRaw('json_contains(column, \'["value"]\')')->get();

标签: arrays json laravel object eloquent


【解决方案1】:

使用这个:

->whereJsonContains('column', ['starts_at' => '2018-11-24 08:00:00'])

【讨论】:

  • @HelenChe 你的意思是->where('column->starts_at', '2018-11-24 08:00:00')
  • 对不起,我的意思是<> 等等。我快速查看了 Builder 代码,但没有看到任何选项...
  • 你的意思是->where('foo->bar', '<', 123)
  • 是的...但前提是 foo->bar 在我的理解中只是键值。抱歉,如果我没有意义,但让我们尝试作为示例发布的原始问题:我将如何获得 availability > 9 的 JSON 数组的结果?
  • 我试过->whereJsonContains('column', ['availability', '>', 9]) 不幸的是不能工作。
猜你喜欢
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2020-10-10
  • 2020-12-16
  • 2018-02-23
  • 1970-01-01
  • 2016-02-18
相关资源
最近更新 更多