Laravel 4 múltiples hasmany para la misma mesa
Pregunta
Tengo una aplicación laravel 4 y en esta aplicación necesito definir un modelo con relación a otro modelo 2 veces pero con discriminación de tipo.
Ejemplo
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver');
}
public function newDrivers(){
return $this->hasMany('Driver');
}
}
entonces la relación será la car
Identificación en el driver
En la tabla, la cuestión es que cuando quiero obtener los controladores antiguos solo para un determinado automóvil, devuelve todos los controladores de ambas relaciones.
Al investigarlo encontré que es la misma tabla, así que ahora configuré un tipo en el Driver
modelo, ahora quiero que mi relación se filtre por este tipo, por lo que los controladores antiguos serán solo controladores con el tipo de controladores antiguos y los controladores nuevos serán los controladores con solo el tipo de controlador nuevo establecido,
¿Cómo se puede hacer esto en Laravel?
Solución
Puedes intentar algo como esto:
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver')->where('type', 'olddrivers');
}
public function newDrivers(){
return $this->hasMany('Driver')->where('type', 'newdrivers');
}
}
Se supone que tienes type
campo como filtro en su base de datos.Si me equivoco type
campo entonces simplemente cambia el field
nombre al correcto porque se te ocurrió la idea de cómo puedes agregar un filtro usando un where
cláusula.