我想在数组中添加Like
运算符,但它给了我错误:
'where子句(
admin_id
= 2且0
= name和Like
=%zdgbdsh%)中的未知列'0'按id
asc限制10偏移排序0)
这是我的查询: -
$conditions = array();
if(!empty($data['name'])) {
$conditions = array_merge($conditions,array('name','Like'=>'%'.$data['name'].'%'));
}
这是我的最终查询: -
$querys = DB::table('users')
->where($conditions)
->skip($iDisplayStart)->take($iDisplayLength)
->OrderBy($orderby,$dir)
->get();
注意:我不想直接查询
where('users.name','like','%'.$data['name'].'%');**
我想在条件变量中做 我正在使用laravel framework 5.2
答案 0 :(得分:0)
这不是应用多个条件的最佳方式,但您始终可以使用whereRaw
所以用你的条件循环一个数组,例如
$conditions = [];
if (!empty($data['name'])) {
$conditions = array_merge(
$conditions,
["name LIKE '%".$data['name']."%'"]
);
}
$query = DB::table('users');
// apply add raw conditions
foreach($conditions as $condition){ $query->whereRaw($condition); }
$query->skip($iDisplayStart)->take($iDisplayLength)
->OrderBy($orderby,$dir)
->get();
您还可以找到一些可以帮助您解决此类问题的软件包。
希望有所帮助
答案 1 :(得分:0)
应该是:
$conditions=array_merge($conditions,array('name' => 'Like %'.$data['name'].'%'));
我刚刚意识到会产生name = Like %data%
您可以将其更改为:
$conditions=array_merge($conditions,array('name', '%'.$data['name'].'%'));
并在何处使用:
->where(join(' LIKE ', $conditions))