Laravel, где с как оператор и процент не работает - PullRequest
0 голосов
/ 07 июня 2018

В 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 голосов
/ 01 февраля 2019

для выполнения аналогичного запроса вы можете отфильтровать коллекцию.

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

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

0 голосов
/ 07 июня 2018

Я нахожу проблему сам: D

метод collect()->where() в laravel поддерживает три параметра (ключ, оператор, значение), но оператор не может быть "LIKE".

thisоператор просто поддерживает>, =, <символы. </p>

0 голосов
/ 08 июня 2018

Вы можете использовать подобное в новой версии Laravel.Это даст вам отфильтрованный результат напрямую.

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

или в вашем случае, как показано ниже:

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

Пожалуйста, проверьте документ ниже для получения более подробной информации о пунктах, где: https://laravel.com/docs/5.6/queries#where-clauses

0 голосов
/ 07 июня 2018

метод where фильтрует коллекцию по заданной паре key / value, поэтому, если вы хотите, чтобы ваш запрос работал, вы должны изменить его на что-то вроде этого

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

Примечание: Я не уверен, что % будет работать так, как в заявлении LIKE, поэтому дайте мне знать, если это работает: D Официальные документы Laravel, объясняющие, где метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...