$this->Post->Comment->
... se réfère à la structure du modèle. $this
indique cette instance de cette classe, pas l'enregistrement en cours.
Donc $this
est le PostsController, $this->Post
est le modèle de la poste et $this->Post->Comment
est le modèle de commentaire. Aucun d'entre eux ne fait référence à un enregistrement spécifique.
$this->Post->id
ne sera fixée si une requête précédente (dans cette méthode) a récupéré un résultat sans ambiguïté et je ne compter sur qu'il soit réglé immédiatement après $this->MyModel->save($data)
sinon je mis explicitement, comme:
$this->MyModel->id = $id;
Personnellement , je le ferais comme suit et récupérer toutes les données associées requises dans une instruction:
$this->Post->contain(array('Comment')); // If you're using containable, which I recommend. Otherwise just omit this line.
$this->Post->read(null,$id);
maintenant, vous aurez la Poste et ses commentaires associés dans un tableau comme celui-ci:
Array
(
[Post] => Array
(
[id] => 121
[title] => Blah Blah an More Blah
[text] => When the bar is four deep and the frontline is in witch's hats what can be done?
[created] => 2010-10-23 10:31:01
)
[Comment] => Array
(
[0] => Array
(
[id] => 123
[user_id] => 121
[title] => Alex
[body] => They only need visit the bar once in the entire night.
[created] => 010-10-23 10:31:01
)
[1] => Array
(
[id] => 124
[user_id] => 121
[title] => Ben
[body] => Thanks, Alex, I hadn't thought of that.
[created] => 010-10-23 10:41:01
)
)
)
... et vous obtenez les commentaires comme celui-ci:
$comments = $this->data['Comment'];
Tout ce que vous voulez (que vous pouvez régler dans l'appel contain()
) au sujet de ce poste est renvoyé dans un paquet à portée de main. En passant, lisez le comportement du Containable si vous ne l'avez pas déjà fait. Le plus tôt vous commencez à l'utiliser, la vie plus facile deviendra.
Thx, mais comment pourrais-je maintenant afficher les commentaires sur la vue? –
'debug ($ data);' dans la vue. Les commentaires devraient être dans '$ data ['Comment']; – bancer