Configuración contiene para una tabla de unión en CakePHP

En mi aplicación tengo las siguientes tablas:

Posts id title content Users id username password Profiles id user_id firstname lastname Comments id post_id user_id content Topics id title Topic_Posts id topic_id post_id 

¡Espero que las relaciones sean bastante obvias! El problema que estoy teniendo es que la última tabla es una tabla de unión para la relación de muchos a muchos entre Publicaciones y Temas. ¡No estoy del todo seguro de cómo configurar esto!

Aquí están mis modelos para publicaciones, temas y temas_Publicaciones:

 class Post extends AppModel { public $name = 'Post'; public $belongsTo = 'User'; public $hasMany = array('Comment', 'TopicPost'); public $actsAs = array('Containable'); } class Topic extends AppModel { public $hasMany = array( 'TopicPost' ); } class TopicPost extends AppModel { public $belongsTo = array( 'Topic', 'Post' ); } 

Por lo que puedo decir, ¿las relaciones son correctas? Y luego en mi método tengo la siguiente statement:

 $post = $this->Post->find('first', array('contain'=> array( 'Comment'=>array('User'=>array('Profile')), 'User'=>array('Comment','Profile') ), 'conditions'=>array('Post.id'=>$id))); 

Así que, básicamente, mi pregunta es cómo agregar el tema al contenido, ya que no he tenido que agregar el comentario y el usuario al modelo de publicación, por lo que no estoy seguro de por qué o qué hacer a continuación …

Además, ¿cómo sacaré los Temas nuevamente? Como estoy confundido en cuanto a cómo va a funcionar esto, considerando que me estoy vinculando a la mesa de unión en lugar de los Temas ACTUALES … A menos que esté fuera de la pista. La ayuda en esto sería apreciada.

Con su configuración actual puede hacer esto:

 'contain' => array( 'TopicPost' => array('Topic') ) 

O puedes agregar

 public $hasAndBelongsToMany = array( 'Topic' => array('with' => 'TopicPost') ); 

al modelo de Post .

Y luego su contenido se verá así:

 'contain' => array( 'Topic' )