我正在尝试使用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` = ?)
我的表
答案 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();