laravel与运营商一样,百分比不起作用

时间:2018-06-07 09:25:29

标签: laravel laravel-5.6

在laravel 5.6中我有$ads

$ads=Ad::whereIn('type',$type)->orderBy('id','desc')->get();

,其值如下所示:

[
{
    "id": 50,
    "title": "sssss",
    "description": "Et enim  provident. Eos animi illum ullam eaque aut.",
    "created_at": "2018-06-06 18:12:43",
    "updated_at": "2018-06-06 18:12:43"
},...
]

我想在这个数组中搜索;

我写的时候:

$titleSearchResult=collect($ads)->where('title','LIKE',"ssss");

我得到的结果是真的;

但是当我写道:

$titleSearchResult=collect($ads)->where('title','LIKE',"%ss%");

我没有得到任何结果。

4 个答案:

答案 0 :(得分:0)

where方法按给定的key / value对过滤集合,因此如果您希望查询有效,则应将其更改为此类

$titleSearchResult=collect($ads)->where('title', 'ssss');

注意: 我不确定%是否会像在LIKE声明中那样工作,所以请告诉我它有效:D Laravel Official docs explaining where method.

答案 1 :(得分:0)

我自己发现了问题:D

laravel中的collect()->where()方法支持三个参数(键,运算符,值),但运算符不能“LIKE”。

此运算符仅支持>,=,<符号。

答案 2 :(得分:0)

您可以将此类似用于laravel的新版本。这将直接为您提供过滤结果。

$users = DB::table('users')
            ->where('name', 'like', 'T%')
            ->get();

或在您的情况下如下:

$users = DB::table('users')
            ->where('name', 'like', '%' . $like . '%')
            ->get();

请查看以下文档,了解有关where子句的更多详细信息: https://laravel.com/docs/5.6/queries#where-clauses

答案 3 :(得分:0)

要执行类似的查询,您可以过滤集合。

$filtered = $ads->filter(function($value,$key){
   if(strpos($value['title'],'ss') !== false){
      return $value;
   }
});

https://laravel.com/docs/5.6/collections#method-filter