Php 如何为where like查询使用Laravel动态数组列名称?
如何为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
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);