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

时间:2017-02-11 09:51:17

标签: php laravel laravel-5 eloquent 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` = ?)

我的表

data_table_1486794412

3 个答案:

答案 0 :(得分:2)

为了对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'));

答案 1 :(得分:0)

我认为这项工作

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

答案 2 :(得分:0)

我正在使用orWhere循环。你可以告诉我如何在循环中使用它...因为2014年和2015年将以阵列的形式出现。

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

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