【问题标题】:how to search a array of objects with array property in laravel如何在laravel中搜索具有数组属性的对象数组
【发布时间】:2021-10-28 02:12:27
【问题描述】:

我想查询一个带有 json 列的表 json列中存储的对象是这样的:

[    
    {
        "title":"first",
        "ids":[79,583,584]
    },
    {
        "title":"second",
        "ids":[600,601,602]
    },
    {
        "title":"third",
        "ids":[605,606,624]
    }
]

例如,我想找到其中一个 ids 属性包含例如 79 的行。像这样:

Model::query()->whereJsonContains('data', ['ids[*]' => 79])->first();

我已经搜索了很多并尝试了一些语法,但没有任何效果。那有可能吗?如何? 我的数据库是mysql

【问题讨论】:

标签: php json laravel eloquent


【解决方案1】:

目前可能无法查询嵌套的 json 格式,不过您可以尝试过滤 eloquent 集合。

您必须先将 json 数据列转换为模型上的数组,然后根据您的条件过滤集合。

$id = 8;
$filtered = Model::all()->filter(function($item, $key) use($id) {
    $count = 0;
    foreach($item->data as $data) {
        if(in_array($id, $data['ids'])) {
            $count += 1;
        }
    }
    return $count > 0;
})->all();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    相关资源
    最近更新 更多