Laravel 4 mehrere Hasmany für denselben Tisch
Frage
Ich habe eine Laravel 4-Anwendung und in dieser Anwendung muss ich zweimal ein Modell in Bezug auf ein anderes Modell definieren, jedoch mit Unterscheidung nach Typ.
Beispiel
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver');
}
public function newDrivers(){
return $this->hasMany('Driver');
}
}
also wird die Beziehung die sein car
Id am driver
Wenn ich in der Tabelle die alten Treiber nur für ein bestimmtes Auto abrufen möchte, werden alle Treiber aus beiden Beziehungen zurückgegeben.
Als ich es mir ansah, stellte ich fest, dass es sich um dieselbe Tabelle handelt, also habe ich jetzt einen Typ in festgelegt Driver
Modell, jetzt möchte ich, dass meine Beziehung nach diesem Typ gefiltert wird, sodass die oldDrivers nur Treiber mit dem Typ oldDrivers und die neuen Treiber nur Treiber mit dem Typ newDriver sind.
Wie kann das in Laravel gemacht werden?
Lösung
Sie können so etwas versuchen:
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver')->where('type', 'olddrivers');
}
public function newDrivers(){
return $this->hasMany('Driver')->where('type', 'newdrivers');
}
}
Vorausgesetzt, dass Sie das getan haben type
Feld als Filter in Ihrer Datenbank.Falls ich mich irre type
Feld, dann ändern Sie einfach das field
Benennen Sie den richtigen Namen, weil Sie auf die Idee gekommen sind, wie Sie mit a einen Filter hinzufügen können where
Klausel.