如何创建动态查询?

时间:2017-01-30 16:23:02

标签: laravel laravel-5 laravel-5.2

我有7条记录。其中6个有selling,1个是rent。在数组我得到这个:

array:2 [▼
  0 => "Selling"
  1 => "Rent"
]

但是当我预测到结果我得到4而不是7.任何建议如何解决这个问题。我试图创建动态查询,所以如果我再输入一件我不需要在这里更改的东西。

if(is_array($option)){
    foreach($option as $o){
        $q->orWhere('name', 'like', $o);
    }

  }
   else{
      $q->orWhere('name', 'like', $option);
   }

3 个答案:

答案 0 :(得分:1)

无需循环,请使用whereIn()

if(!is_array($option)){
   $option = [$option];
}
$query->whereIn('name', $option)->get();

答案 1 :(得分:0)

您可以使用PHP的array_unique来确保没有重复的选项。

if(is_array($option)) {
    $option = array_unique($option); // remove any duplicate options
    foreach($option as $o){
       $q->orWhere('name', 'like', $o);
    }
}
else{
    $q->orWhere('name', 'like', $option);
}

答案 2 :(得分:0)

如果您想在查询中使用 LIKE ,最好这样写

if(is_array($option)){
    foreach($option as $o){
        $q->orWhere('name', 'like', '%'.$o.'%');
    }

  }
   else{
      $q->orWhere('name', 'like', '%'.$option.'%');
   }

否则会搜索确切的名称

相关问题