Olá a todos,
Estou abrindo este tópico, por que os demais estão bloqueado.
Na tabela do Cliente tenho ID do Município.
Na tabela do Município tenho o ‘uf_ibge’ que guarda o ID da tabela Estado.
Na tabela Estado tenho o ‘uf_ibge’ como chave primária.
Cliente -> codmunicipio(FK)
Municipio -> codmunicipio(PK), uf_ibge(FK)
Estado -> uf_ibge(PK)
Meu relacionamento:
class Cliente extends CActiveRecord {
return array(
'municipio' => array(self::BELONGS_TO, 'Municipio', 'codmunicipio',
'together' => true,
'joinType' => 'INNER JOIN'
),
'estado' => array(self::HAS_ONE, 'Estado', array('uf_ibge' => 'uf_ibge'),
'through' => 'municipio'
),
);
}
Consigo resultados como:
$model->municipio->municipio /*Descrição da cidade*/
e
$model->estado->uf /*Sigla da unidade federativa*/
Onde estou querendo chegar.
class Veiculo extends CActiveRecord {
public function relations() {
return array(
'cliente' => array(self::BELONGS_TO, 'Cliente', 'codcliente',
'together' => true,
'joinType' => 'INNER JOIN'
),
);
}
}
Eu tenho um model Veiculo que tem uma ID referêncial com a tabela do Cliente, que é para identificar de quem é o Veiculo.
E nesta tabela Cliente que como descrito acima tem os relacionamento.
O máximo que consegui chegar foi:
$model = $this->loadModel();
echo $model->cliente->municipio->municipio /*Descrição da cidade*/
Não consigo mostrar os dados do relacionamento do estado.
Já tentei:
echo $model->cliente->estado->descricao;
echo $model->cliente->estado->uf;
print_r($model->cliente->estado); /*Retorna 1(true)*/
var_dump($model->cliente->estado); /*Retorna NULL*/
Tem alguma solução para que eu não use:
$model->cliente->municipio->estado->uf
Ou esse relacionamento pode me trazer pouca performance?