Estoy haciendo pruebas con yii, de momento todo correcto, pero tengo una duda respecto a las relaciones n:m.
Supongamos el tipico caso, tabla posts (id_post, texto) tabla tags (id_tag, nombre) y la tabla post_tags con el PK de ambas tablas.
Vale, se supone que me tendría que crear un modelo para la tabla post_tags y cada vez que agregue un tag meter un registro en la bd mediante ese modelo, correcto?
He estado buscando info, y he visto extensiones y demás por internet, pero no quiero meterme en esas cosas hasta que no domine bien el framework.
Luego, tengo otra duda mas. Supongamos la tabla empleados (id_empleado, nombre, departamento) y la tabla departamento (id_departamento, nombre), siendo departamento en la tabla empleado un FK hacia departamento.
Genero los modelos y tal, hago un bucle para recorrer los empleados, y en cada empleado voy accediendo a $model->departamento->nombre. Si tengo 10 empleados, haciéndolo así tiraría 10 consultas a la bd? en caso de ser cierto… obviamente, debería tirar una sola consulta con un join, verdad?
A ver si alguien me puede echar un cable, gracias desde ya!
Respecto a la primera pregunta, si lo que necesitas es simplemente relacionar un post con un tag, recomendaría un método en la clase Post que se encargue de hacer el query a la base de datos. No se justifica un modelo exclusivo para eso.
También podrías enviar como parámetro un arreglo con tags y usar un foreach dentro del método.
Lo que sí, tendrías que preocuparte de borrar manualmente los registros de dicha tabla cuando se borre un post o un tag, y ahí se podría justificar usar un modelo exclusivo para la tabla que almacena la relación n:m.
Aunque en tal caso podrías simplemente añadir otro método a la clase Post que borre el registro, y llamar este método cuando se borre un post o un tag.