如何在 Laravel Eloquent 中获取包含数组的 JSON 对象的值?

Posted

技术标签:

【中文标题】如何在 Laravel Eloquent 中获取包含数组的 JSON 对象的值?【英文标题】:How to get value of JSON object which includes arrays in Laravel Eloquent? 【发布时间】:2020-12-16 09:16:50 【问题描述】:

我有一个这样的 JSON 结构:


    "dogs": 
          [
            
             "type": "labradoodle",
             "color": "black",
             "name" : "Blak"
            ,
            
             "type": "poodle",
             "color": "pink",
             "name" : "Colins"
            
          ],
      "cats": [
            
             "type": "Maine Coon",
             "color": "grey",
             "name" : "Kitty"
            
        ]

如何使用whereJsonContains 按类型获取动物?例如,我需要所有粉红色的贵宾犬?

【问题讨论】:

【参考方案1】:

根据你使用的 Laravel 的数据库类型和版本,'whereJsonContains' 的语法和可用的助手会有所不同。您还没有提供任何一条信息,因此您可以在使用 Json 后执行类似的操作。

foreach($animals as $animal => $attribute)
// Check key, value data here for what you want.

见:Laravel Documentation

【讨论】:

是的,对不起。它是 Postgres,也是 Laravel 的最后一个版本。我只是认为我可以使用 whereJsonContains('dogs->type','poodle') 但它不起作用。您的解决方案适合我,但首先我需要获取所有动物,然后才能过滤它。但我想过滤它,然后才得到动物

以上是关于如何在 Laravel Eloquent 中获取包含数组的 JSON 对象的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Laravel 8 Eloquent 中的嵌套关​​系中获取数据?

如何从 laravel 的 eloquent 集合中获取外键

如何在 Laravel Eloquent ORM 中获取插入的多行数据

如何在 Laravel Eloquent 中获取包含数组的 JSON 对象的值?

如何使用Laravel Eloquent获取相关城市的国家名称

如何从数组 eloquent laravel 中获取权限名称值