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 ?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top