Как пройти foreach внутри laravel DB :: select query - PullRequest
0 голосов
/ 28 апреля 2020

Я хочу перебрать список слов, разбитых в функции processNeedle. Это нормально работает с обычными php, но не с laravel.

    $query = $request->input('query');  

    $trim = new SearchTrim();

    $words = $trim->ProcessNeedle($query);


    $concat = "CONCAT(";        

     $concat.="title,";

    $concat.="'')";


    $sql =DB::select("SELECT DISTINCT id,title,code,abstract FROM projects WHERE 0 ";

    foreach ($words as $word) $sql.=" OR $concat LIKE '%$word%'";
    $sql.=" ORDER BY id DESC";

Моя функция запросов очень похожа на php

SQL query: SELECT DISTINCT id,title,code FROM projects WHERE 0 OR CONCAT(title,'') LIKE '%intranet%' OR CONCAT(title,'') LIKE '%mailing%' ORDER BY id DESC;

Как мне добиться этого в Laravel Пожалуйста, помогите

1 Ответ

0 голосов
/ 28 апреля 2020

Попробуйте этот пример. Я надеюсь, что это поможет вам.

Передать foreach внутри laravel DB :: select query

$items = ['condition1', 'condition2', 'condition3'];
        $results = App\Model::where(function ($query) use ($items) {
            foreach($items as $item) {
                $query->orWhere('dbfield', 'LIKE', "%$item%");
            }
        })
            ->get();
        dd($results);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...