Как будет правильнейобрабатывать связанные модели?

Замучал меня тут вопроиск один, как правильнее работать со связанными моделями…

Имеем модели Post(первичный ключ contentID) и Content(первичный ключ ID autoinc)


class Post extends CActiveRecord{

 public function relations(){

  return array(

   'content' => array(self::BELONGS_TO, 'Content', 'contentId'),

  );

 }

}


class Content extends CActiveRecord{


}




Первый вариант контроллера (обе модели создаем одельно и передаем их оба в view)


class PostController extends Controller{

 public function actionCreate(){

  $post = new Post;

  $content = new Content;


  //...

  $this->render('create', array('post' => $post, 'content' => $content));

 }


 public function actionUpdate($id){

  $post = Post::model()->findByPk($id);

  $content = Content::model()->findByPk($id);


  //...

  $this->render('update', array('post' => $post, 'content' => $content));

  //в форме к атрибутам связанной модели обращаемся как

  //$form->activeTextField($post, 'someField');

  //$form->activeTextField($content, 'title');

 }

}



Второй вариант контроллера


class PostController extends Controller{

 public function actionCreate(){

  $post = new Post;

  $post->content = new Content;


  //...

  $this->render('create', array('post' => $post));

 }


 public function actionUpdate($id){

  $post = Post::model()->findByPk($id);


  //...

  $this->render('update', array('post' => $post));

  //в форме к атрибутам связанной модели обращаемся как

  //$form->activeTextField($post, 'someField');

  //$form->activeTextField($post->content, 'title');


 }

}

Первый мне кажется более правильным, но опятьже неудобно передавать несколько связанных моделей в форму.

Во втором все связанные модели получаем непосредственно в представлении…

Какой же вариант все-таки более правильный?

Можно использовать любой вариант. То что вы здесь написали работает одинаково.

Если бы вы использовали отношение HAS_MANY или MANY_MANY то предпочтительней был бы второй вариант плюс жадной загрузка т.к. вы сокращаете количество запросов в выборке в методе actionUpdate. Но здесь надо смотреть на код контроллера.

Если связанные модели получаются с помощью "ленивой" загрузки, то не вижу смысла делать это в контроллере и передавать их отдельно в представление.