如何在laravel中搜索具有数组属性的对象数组
Posted
技术标签:
【中文标题】如何在laravel中搜索具有数组属性的对象数组【英文标题】:how to search a array of objects with array property in 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
【问题讨论】:
你可以这样做:***.com/questions/30804878/… 【参考方案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();
【讨论】:
以上是关于如何在laravel中搜索具有数组属性的对象数组的主要内容,如果未能解决你的问题,请参考以下文章