Relaciones

Hola otra vez, siento ser tan pesado :(, tengo una nueva duda, hasta ahora los ejemplos que he realizado para mi aprendizaje abarcaban solo una tabla de la base de datos, ahora con un proyecto ya mas avanzado (que es para aprender pero si me sale bien se publicará) tengo una base de datos en MySQL, con InnoDB para garantizar la integridad referencial. El problema me viene a la hora de insertar registros en una tabla que requiere un campo de otra tabla (relacion 1:n) ejemplo real de la aplicacion:

tablas: poblacion, persona

una poblacion pertenece a 0:n personas y una persona tiene 1:1 poblacion.

Tengo los modelos generados con gii (que ya tienen puesta las relaciones) y los formularios CRUD tambien generados con gii, y a la hora de insertar una nueva persona si no existe tal población me salta exception, no se deberia comprobar esto solo al tener la relación puesta en el modelo? en caso de no ser así, cómo lo hago?

[b]gracias y un saludo,

s0mk3t[/b]

Una posible solución es que a la hora de crear una persona, en el formulario, cambias el input del id de la población por un desplegable con las poblaciones disponibles: (Puedes motrar el campo de la tabla que quieras, como el nombre de la población y tratar su id, para que te sea más fácil)

//Esto es orientativo pero ya ves como funcina

<?php echo $form->dropDownList($model, ‘tbl_poblacion_id’, Poblaciones::model()->poblaciones); ?>

eso lo tengo ya hecho, pero era por si hacia algo yo mal o que, pero lo tengo solucionado como tu lo has dicho, es más he tenido que poner 3 dropdowns ya que una poblacion pertenece a una provincia y tal :P

GRACIAS!

Pues, en principio, no te tendría que decir que la poblacion no existe, porque le estas dando un listado de las poblaciones existentes en la base de datos, otra cosas es que modifiques tú en el navegador o dónde sea el html del form, algo que tienes que tratar desde el controlador, verificando que existe esa pablación… por si te la están dando con queso.