如何在laravel 5.4中的where子句中使用MY SQL IN运算符?

时间:2017-10-25 15:02:11

标签: mysql laravel

任何人都可以帮我解决这个问题。

我需要在laravel 5.4的where子句中使用MY-SQL(IN)运算符,我有一个列变量,它是一个可变长度数组,保存名为" $ cols"所以我不能使用" whereIn"因为我不知道我的条件是否属于我的代码

    conditions = [];
    if(!is_null($cols)){
        for($i = 0; $i < count($cols); $i++){
            $vals = explode("-", $values[$i]);
            $conditions[] = [$cols[$i], 'IN', $values[$i]];
        }
    }
    $data = DB::table('my_table')->where($conditions)->orderBy('id','desc')->get();  

所以任何人都可以帮助我做这样的事情

Thaks

2 个答案:

答案 0 :(得分:1)

根据documentation,您可以使用whereIn,例如:

$data = DB::table('my_table')
      ->where($conditions)
      ->whereIn('something', [val1, val2, val3])
      ->orderBy('id','desc')
      ->get();

答案 1 :(得分:1)

尝试这样的事情

$queryBuilder = DB::table('my_table');

if( ! empty($cols)){
    for($i = 0; $i < count($cols); $i++) {
      $vals = explode("-", $values[$i]);
      // adding whereIn() per column
      $queryBuilder->whereIn($cols[$i], $vals);
    }
}

$data = $queryBuilder
          ->orderBy('id','desc')
          ->get();