Laravel 4 vários temmuitos para a mesma tabela
Pergunta
Eu tenho um laravel 4 aplicação e nesta aplicação, você precisa definir um modelo com relação ao outro modelo 2 vezes, mas com discriminação do tipo.
Exemplo
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver');
}
public function newDrivers(){
return $this->hasMany('Driver');
}
}
assim, a relação vai ser o car
Bilhete de identidade driver
's tabela, a coisa é quando eu quiser obter os drivers antigos apenas para um determinado carro, ele retorna todos os controladores de ambas as relações.
Quando olhando para ele, eu encontrei porque é a mesma tabela, então agora eu definir um tipo na Driver
o modelo, agora eu quero a minha relação para ser filtrados por este tipo, portanto, o oldDrivers serão apenas os drivers com o tipo de oldDrivers e novas drivers irão ser os Drivers com apenas o newDriver tipo de conjunto,
Como isso pode ser feito no Laravel ?
Solução
Você pode tentar algo como isto:
class Car extends Eloquent{
public function oldDrivers(){
return $this->hasMany('Driver')->where('type', 'olddrivers');
}
public function newDrivers(){
return $this->hasMany('Driver')->where('type', 'newdrivers');
}
}
Assumido que você tem type
campo como um filtro em seu banco de dados.Se eu estou errado sobre type
campo, em seguida, você só precisa mudar o field
nome para a direita porque você tirou a idéia de que como você pode adicionar o filtro, utilizando um where
cláusula.