Так что я немного заблудился с CActiveRecord в Yii.
Допустим, у меня есть следующие простые модели:
Итак, оставьте комментарий HAS_MANY, я думаю, что это описание должно быть достаточно очевидным из этого описания.
Что если я хочу получить все комментариев, а затем получить конкретный комментарий для чего?Как будто я хочу отобразить список комментариев к сообщению, но показать содержание только одного из них (по PK).
Итак, у меня есть:
$this->post = Post::model()->with('comments')->findByPk( $pid );
// this next line is an extra DB Query, right?
$this->comment = Comment::model()->findByPk( $cid );
Но я хочу кое-чтокак:
$this->post = Post::model()->with('comments')->findByPk( $pid );
// this is not valid code because the comments is an array
$this->comment = $this->post->comments->findByPk( $cid ); // <---
Нужно ли мне самому оборачивать это в цикл, чтобы реализовать findByPk во второй раз?
Мой второй вопрос, могу ли я сделать что-то вроде следующего?
$this->post = Post::model()->with('comments')->findByPk( $pid );
$this->comment = Comment::model()->findByPk( $cid );
// Get the PK of the next and previous comments from the $cid comment
// again, not valid code
$this->next = $this->post->NextComment($this->comment);
$this->prev = $this->post->PreviousComment($this->comment);
Или мне снова нужно обернуть свой цикл над комментариями?
Я просто пытаюсь воспользоваться тем, что предлагает Yii, прежде чем писать дополнительный код.В документации всегда предполагается, что вам всегда нужны все реляционные данные, в ней не указано, как выбирать части реляционных данных.