Как Laravel Dynami c имя столбца массива для, где, как запрос? - PullRequest
3 голосов
/ 18 марта 2020

Как Laravel Динамо c Имя столбца массива для запроса, похожего на запрос?

Пример:

User::where(['name', 'surname'], 'LIKE', '%' . $value . '%')->get();

Но ошибка:

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select count(*) as aggregate from `deneme` where (`0` = name and `1` = surname) and `user`.`deleted_at` is null)

Ответы [ 2 ]

3 голосов
/ 18 марта 2020

Я думаю, вы должны попробовать это:

$field = ['name', 'surname'];
$name = User::Where(function ($query) use($field, $value) {
            for ($i = 0; $i < count($field); $i++){
                $query->orwhere($field[$i], 'like',  '%' . $value .'%');
            }      
        })->get(); 
3 голосов
/ 18 марта 2020

Вы можете динамически создать свой запрос, используя LIKE clause, как показано ниже:

$query = User::query();
$count = 0;

foreach($conditions as $column) {

 if(count == 0){ 
    $query = $query->where($column, 'like', '%' . $value . '%') 
 } else {
    $query = $query->orWhere($column, 'like', '%' . $value . '%') }
 }

  $count++


}

$user = $query->get();
...