试图在 json 数组中搜索

Posted

技术标签:

【中文标题】试图在 json 数组中搜索【英文标题】:trying to search in array that is json 【发布时间】:2019-02-12 10:14:27 【问题描述】:

这是我的索引方法:

if($request->has('search'))
        $search = $request->get('search');
        $households = Household::where('household_id',"1938347-32960066")->get();
    

当我使用上面提到的 sn-p 时,我正在获取数据,但是当我尝试使用以下代码获取相同的数据时,它返回空。

if($request->has('search'))
        $search = $request->get('search');
        $households = Household::where('household_id', 'like', '%$search%')->get();
    

问题出在哪里,我该如何解决?

【问题讨论】:

Arvind 是正确的,您当前正在将静态字符串传递到查询中,即您在询问 WHERE household_id LIKE '%string%'。在允许使用双引号(或连接)进行字符串插值后,它应该可以工作。检查搜索参数中的值是否符合您的预期。 搜索参数提供了我在搜索中提供的正确值。 您确定 $search 包含“1938347-32960066”并且您将“%1938347-32960066%”作为最后一个参数传递给 where()?如果你这样做where('household_id', $search),它是否有效? 不适用于 where('household_id', $search) 那么逻辑上 $search 不能等于 '1938347-32960066'。确保没有细微差别,例如不同的破折号/连字符或空格。 【参考方案1】:

改用双引号

"%$search%"

或者,只是连接:

'%'.$search.'%'

【讨论】:

【参考方案2】:

你也可以这样尝试:

 $search= "%".$search."%";

->whereRaw("household_id like '".$search."'")

【讨论】:

以上是关于试图在 json 数组中搜索的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中搜索 JSON 数组

在 PostgreSQL 中的 jsonb 列中搜索 json 数组,其中数据为 json 数组

如何搜索包含 JSON 数组的 SQL 列

如何使用 Eloquent 在包含对象数组的 json 字段中进行搜索

如何在mysql表中搜索json数组字段中的字段?

如何在json中获取评级数组