2017-11-13 7 views
0

Ich habe zwei Modelle, die miteinander verbunden sind.Eloquent where-Klausel in JOIN-Tabelle - Laravel 5.5

class Company extends Model { 
    public function addresses() { 
     return $this->belongsToMany('\App\Address', 'address_mapping', 'uid_company', 'uid_address'); 
    } 
} 

class Address extends Model { 
} 

In meiner JOIN-Tabelle habe ich eine Spalte namens active. Wie kann ich alle aktiven Adressen von der Firma holen? Oder wie kann ich eine Where-Klausel in der JOIN-Tabelle implementieren?

Vielen Dank!

+0

Dies sollte Ihre Frage beantworten: https://laravel.com/docs/5.5/eloquent-relationships –

+0

Ja, richtig. Ich kannte den Begriff Pivot-Tabelle nicht. :-) – sam918

Antwort

1

Die Tabelle, die Sie eine "JOIN-Tabelle" nennen, wird normalerweise Pivot-Tabelle genannt. Sie können alle aktiven Datensätze holen durch wherePivot Methode:

$company = Company::first(); 
$activeAdresses = $company->addresses()->wherePivot('active', 1); 

Oder Sie können die Beziehung in Ihrem Modell direkt definieren:

class Company extends Model { 
    public function activeAddresses() { 
     return $this->belongsToMany('\App\Address', 'address_mapping', 'uid_company', 'uid_address') 
        ->wherePivot('active', 1); 
    } 
} 

Siehe Abschnitt Filtering Beziehungen über Zwischentabellenspalten in Eloquent documentation

+1

Oder direkt im Modell definieren wie [Filtern von Beziehungen über Zwischenspalten] (https://laravel.com/docs/5.5/eloquent-relationships#many-to-many) –