2017-01-12 56 views
1

我需要檢查兩個數據透視表的條件。我知道我可以用這個檢查一個條件:拉拉維爾5.1:我怎麼能有兩個地方在口頭上說話?

$dis = $user->discounts()->wherePivot('used_for_id', '=', null) 

但是,我想要兩個條件。當我使用orWherePivot時,兩個條件是OR編在一起,但我希望它們可以合併爲AND

$whereData = [ 
    ['id', "=", $discountId], 
    ['used_for_id', "=", null] 
]; 
+0

只有一點我想補充我的問題: 因爲ID爲默認在未糾正wherePivot「身份證」 。我將其改爲 - > wherePivot('discount_id',$ discountId) - > wherePivot('used_for_type',null)且正確無誤! –

回答

3

wherePivot()與普通where()方法的工作方式相同;你可以鏈子第二wherePivot()條件,這將是AND版與之前的條件:

$dis = $user 
    ->discounts() 
    ->wherePivot('id', '=', $discountId) 
    ->wherePivot('used_for_id', '=', null) 
    ->get(); 
2

的wherePivot函數定義如下。所以ü可以使用$布爾變量爲「或」,「與」加盟條件

public function wherePivot($column, $operator = null, $value = null, $boolean = 'and') { 
    //code 
} 

$dis = $user->discounts()->wherePivot('column', '=', null,'and')  
     ->wherePivot('column', '=', null,'or')  
     ->wherePivot('column', '=', null,'and')  
     ->get(); 
+0

'orWherePivot()'是調用'wherePivot()'爲「or」作爲最後一個參數的快捷方法。 OP說這不是他們想要的。 – patricus