У меня есть две модели, которые я хотел бы представить в одном контроллере Yii / View. Теперь я знаю, как сделать так, чтобы он мог создавать из обеих, однако я прибег к «хаку» для стороны обновления и был бы признателен некоторая помощь, чтобы сделать это правильно.
У меня есть две модели Recipes и RecipeSteps, которые определены как отношения в контроллере Recipe. RecipeSteps имеет столбец "recipe_id", который является внешним ключом и первичным ключом рецептов. Обе таблицы являются innoDB и имеют настройку отношений. RecipeSteps имеет ON DELETE CASCADE и ON UPETATE RETAIN.
Это мое actionUpdate от RecipesController.php
public function actionUpdate($id)
{
$model=$this->loadModel($id);
$recipeSteps=$this->loadModelSteps($id);
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Recipes']) && isset($_POST['RecipeSteps']))
{
$model->attributes=$_POST['Recipes'];
$recipeSteps->attributes=$_POST['RecipeSteps'];
if($model->save())
$recipeSteps->recipe_id = $model->recipe_id;
$recipeSteps->save();
$this->redirect(array('view','id'=>$model->recipe_id));
}
$this->render('update',array(
'model'=>$model,
'recipeSteps'=>$recipeSteps,
));
}
А это моя модель нагрузки.
public function loadModel($id)
{
$model=Recipes::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
А вот второй, который я сделал для другой Модели, которую я хотел бы объединить в одну модель.
public function loadModelSteps($id)
{
$recipeSteps=RecipeSteps::model()->findByPk($id);
if($recipeSteps===null)
throw new CHttpException(404,'The requested page does not exist.');
return $recipeSteps;
}
Итак, я хотел бы выяснить, как использовать только одну «LoadModel», которая работает для обеих моделей в actionUpdate.