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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top