试图在 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 数组中搜索的主要内容,如果未能解决你的问题,请参考以下文章
在 PostgreSQL 中的 jsonb 列中搜索 json 数组,其中数据为 json 数组