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();
我正在尝试使用 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();