2017-01-12 10 views
1

Ich muss überprüfen, wo zwei Bedingungen auf einer Pivot-Tabelle. Ich weiß, dass ich eine Bedingung mit diesem prüfen kann:laravel 5.1: wie kann ich zwei wherePivot in eloquent haben?

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

Allerdings möchte ich zwei Bedingungen. Wenn ich orWherePivot verwende, sind die zwei, wo Bedingungen OR ed zusammen sind, aber ich will sie AND ed zusammen sein.

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

nur Punkt, den ich für meine Frage hinzufügen: nicht „id“ in wherePivot korrigieren, da id für Standard ist in dem . Ich ändere das zu -> wherePivot ('discount_id', $ discountId) -> wherePivot ('used_for_type', null) und funktioniert korrekt! –

Antwort

3

wherePivot() funktioniert genauso wie ein normales where() Verfahren; Sie können die Kette nur auf dem zweiten wherePivot() Zustand und es wird AND ed mit den bisherigen Bedingungen:

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

Die wherePivot Funktionsdefinition ist unten angegeben. So können u $ boolean Variable als ‚oder‘ und verwenden ‚und‘ zum Verbinden Zustand

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()' ist eine Verknüpfungsmethode zum Aufrufen von 'wherePivot()' mit "oder" als letzten Parameter. OP sagte, das ist nicht was sie wollen. – patricus

Verwandte Themen