How Laravel dynamic array columns name for where like query?

Viewed 1636

How Laravel dynamic array columns name for where like query?

Sample:

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

But error :

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 Answers

I think you should try this:

$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(); 

You can dynamically create you query using LIKE clause as below:

$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();
Related