Laravel:无法使用 laravel 查询构建器构建多个 orWhere 查询

Laravel: unable to build multiple orWhere query with laravel query builder

我正在尝试使用 laravel 查询生成器进行此查询,但我不明白我该怎么做:

查询

select * from `data_table_1486794412` where (`column_2` = '2014' or `column_2` = '2015') and (`column_1` = 'GNDU')

我的代码是:

$dbObj =  DB::table($datatableName->dataset_table);
$dbObj->orWhere('column_2','2015');
$dbObj->orWhere('column_2','2015');
$dbObj->where(array('column_1','GNDU'));

Laravel 生成查询:

select * from `data_table_1486794412` where `column_2` = ? or `column_2` = ? and (`column_1` = ?)

我的Table

为了将 WHERE 子句分组以便它们被方括号包围,您需要将回调传递给 where() 调用。

下面的代码应该可以解决问题:

$dbObj =  DB::table($datatableName->dataset_table);
$column1 = 2015;
$column2 = 2016;    

$dbObj->where(function($query) use ($column1, $column2) {
  $query->orWhere('column_1',$column1);
  $query->orWhere('column_2',$column2);
});
$dbObj->where(array('column_1','GNDU'));

我觉得行

$dbObj =  DB::table($datatableName->dataset_table);
$dbObj->orWhere('column_2','2015')->orWhere('column_2','2015')->where(array('column_1','GNDU'))

我正在循环中使用 orWhere。你能告诉我如何在循环中使用它吗..因为 2014 年和 2015 年是以数组的形式出现的。

您可以使用 whereIn 而不是循环,您可以在循环中传入一个数组:

$dbObj =  DB::table($datatableName->dataset_table);
$dbObj->where('column_1', 'GNDU')->whereIn('column_2', $yourArray)->get();