2017-02-11 70 views
0

我試圖讓這個查詢與laravel查詢生成器,但我不明白我怎麼可以這樣做:Laravel:無法建立與laravel查詢構建器多個orWhere查詢

查詢

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生成Q uery:

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

我表

data_table_1486794412

回答

2

爲了組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')); 
+0

我們可以通過用匿名函數額外參數? wirth'$ query,$ extra' –

+0

你想傳遞什麼參數? –

+0

每列的值來自單獨的var。意味着2015年和2014年 –

0

我認爲這是工作

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

我在循環中使用'orWhere'。你能告訴我如何在循環中使用它嗎?因爲'2014'和'2015'是以array的形式出現的 –

0

我在循環使用orWhere。你能告訴我如何在循環中使用它嗎?因爲2014年和2015年將以陣列形式出現。

您可以使用其中而不是一個循環,在那裏你可以在陣列中傳遞:

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