如何在数组laravel 5.2中使用like运算符?

时间:2017-03-31 08:09:23

标签: php mysql laravel-5.2

我想在数组中添加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

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))