Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何为where like查询使用Laravel动态数组列名称?_Php_Laravel_Eloquent_Query Builder - Fatal编程技术网

Php 如何为where like查询使用Laravel动态数组列名称?

Php 如何为where like查询使用Laravel动态数组列名称?,php,laravel,eloquent,query-builder,Php,Laravel,Eloquent,Query Builder,如何为where like查询使用Laravel动态数组列名称 示例: 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

如何为where like查询使用Laravel动态数组列名称

示例:

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)

您可以使用
LIKE子句动态创建查询,如下所示:

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

我想你应该试试这个:

$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(); 
$field=['name','name'];
$name=User::Where(函数($query)use($field,$value){
对于($i=0;$iorwhere($field[$i],'like','%'。$value'%');
}      
})->get();

不能使用具有相同like的两列。请尝试
User::where('name'、'like'、'%'.$value.'%')->或where('names'、'like'、'%'.$value.'%')
@TheNobleBrain现在您的数组有name、names,它是否包含更多属性?或者数组可以为空?@TheNobleBrain您想要的“where”或“or where”?域名以数组类型动态出现。现在听起来是静态的。我必须根据动态到达的数组动态生成查询。请不要通过破坏您的帖子为其他人做更多的工作。通过在Stack Exchange网络上发布,您已授予Stack Exchange在下不可撤销的权利,以分发该内容(即,无论您未来的选择如何)。根据堆栈交换策略,帖子的非破坏版本是分发的版本。因此,任何故意破坏行为都将恢复原状。如果您想了解有关删除帖子的更多信息,请参阅:$query=User::query()$条件=[‘姓名’、‘姓氏’];foreach($column形式的条件){$query=$query->orWhere($column'like','%'.$search'.%');}$data=$query->orderByDESC('id')->paginate(10);