Замучал меня тут вопроиск один, как правильнее работать со связанными моделями…
Имеем модели 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');
}
}
Первый мне кажется более правильным, но опятьже неудобно передавать несколько связанных моделей в форму.
Во втором все связанные модели получаем непосредственно в представлении…
Какой же вариант все-таки более правильный?