在laravel中的数据库列数组中进行数组搜索[关闭]
Posted
技术标签:
【中文标题】在laravel中的数据库列数组中进行数组搜索[关闭]【英文标题】:array search in database column array in laravel [closed] 【发布时间】:2022-01-17 23:47:14 【问题描述】:My Amenity Database 列存储 json_encode(array) 数据如下:
column name amenity
["key":"4MiZ54lNosCWc5VPCBa5uGBwrinFGC","value":"WI_FI","key":"fuDn4n5gSMFJ5hCOOp445dh5Cmfc5g","value":"免费早餐".....]
column name variable name $search_term
我在数组中的搜索词如下:
[ “无线上网”, “电话”, 《游泳池》]
我尝试包子不工作:
$data->whereIn('amenity',$search_term)
【问题讨论】:
这样的json数据不能使用whereIn ***.com/a/51123852/8607640 看到这个答案:使用 whereJsonContains 【参考方案1】:试试这个:
$search_term = ['WI_FI', 'COMPLIMENTARY '];
$values = array_map(function($value)
return array(
'value' => $value
);
, $search_term);
$data = new yourModel();
return $data->whereJsonContains('amenity', $values)
->get();
使用 array_map() 可以返回一个键为 'value' 的数组。
【讨论】:
【参考方案2】:我的回答:
$_search_term = [“WI_FI”、“电话”、“游泳池”]
foreach ($search_term $_search_term) $data->where('amenity', 'LIKE', "%$_search_term%");
【讨论】:
这不是对 JSON 列进行查询的方法。您在 cmets 中获得了一个指向适当解决方案的指针。 这当然不是好方法:/ ??以上是关于在laravel中的数据库列数组中进行数组搜索[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent 搜索 JSON 数组以获取特定列的值
在 MySQL JSON 字段中的数组中搜索值(Laravel/Lumen)[重复]
Laravel 8:按嵌套列对分组数组进行排序 - 我应该在 sortBy 闭包中放入啥?
从 Laravel 中的数组向数据透视表中的额外列添加条件值