Hola a todos!
-
Tengo los modelos A, B y C.
-
A tiene una relación BELONGS_TO con B.
-
B tiene una relación BELONGS_TO con C.
Ejemplo: A (Persona) -> B (Ciudad) -> C (País)
¿Cómo puedo mostrar un dropdown en la búsqueda avanzada dentro de la vista admin del modelo A que filtre por id de C?
Probé creando una relación de este tipo (en el modelo A):
'relacionAC' => array(self::BELONGS_TO, 'C', 'id'),
y dentro de la función search() de A con esto:
...
$criteria->together = true;
$criteria->with = array('relacionAC');
$criteria->compare('relacionAC.id', $this->relacionAC_id);
...
¿Cómo paso desde _search.php el valor del id?
Gracias por anticipado 
lagogz
(Lagocamanho)
2
En tu modelo A creas una propiedad por ejemplo
public function getIdC()
{
return $this->relacion_ab->relacionbc->id_c;
}
relacion_ab = la relación de tu modelo A con tu modelo B.
relacion_bc = la relación de tu modelo D con tu modelo C.
Y en tu dropdonwlist usas esta propiedad.
Un saludo.
Lo solucioné… lo escribo por si a alguien le sirve:
-
declarar el atributo relación como ‘safe’ y ‘on’=>‘search’
-
colocar el campo en la búsqueda así:
<?php echo $form->dropDownListRow($model, 'relacionAB', ...opciones..., array('prompt'=>''));?>
-
$criteria->together = true;
$criteria->with = array('atributo.relacionAB.relacionAC');
$criteria->compare('relacionAB.id', $this->relacionAB);
$criteria->compare('relacionAC.id', $this->relacionAC);
Saludos.