Laravel 4 ha più hasmany per la stessa tabella
Domanda
Ho un'applicazione di Laravel 4 e in questa applicazione ho bisogno di definire un modello con relazione con un altro modello 2 volte ma con discriminazione sul tipo.
Esempio
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver');
}
public function newDrivers(){
return $this->hasMany('Driver');
}
}
.
Quindi la relazione sarà l'ID car
nella tabella del driver
, la cosa è quando voglio ottenere i vecchi driver solo per una certa macchina, restituisce tutti i conducenti da entrambe le relazioni.
Quando lo guardavo ho trovato perché è la stessa tabella, quindi ora ho impostato un tipo nel modello Driver
, ora voglio che la mia relazione sia filtrata da questo tipo, quindi i vecchi saranno solo i driver con il tipo diOldDrivers e nuovi driver saranno i driver con solo il set di tipo NewDriver,
Come può essere fatto a Laravel?
Soluzione
Puoi provare qualcosa del genere:
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver')->where('type', 'olddrivers');
}
public function newDrivers(){
return $this->hasMany('Driver')->where('type', 'newdrivers');
}
}
.
Assuni che si dispone di un campo type
come filtro nel tuo database.Se sbaglio del campo type
, basta modificare il nome field
a quello acco, perché hai l'idea che come puoi aggiungere il filtro utilizzando una clausola where
.