Duda sobre relaciones n:m

Buenas,

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!

La segunda parte está respondida en el manual aquí, así que ni caso

http://www.yiiframework.com/doc/guide/1.1/en/database.arr

pero gracias igualmente

En cuanto a la primera pregunta, hasta el momento no he visto otra manera. (claro puedes ir directamento con el ‘insert’ etc.)

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.

Algo así: http://pastebin.com/xNybvwef

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.

Saludos.