在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 中的数组向数据透视表中的额外列添加条件值

Laravel 雄辩不更新 JSON 列:数组到字符串的转换

如何过滤数组以获取laravel中两个不同对象中的特定列