Yii2 - сохранение фиксированных данных во второй таблице при создании нового объекта
У меня есть две таблицы "проекты" и "задачи". Они связаны друг с другом. При создании нового проекта я хочу создать и сохранить также три связанные задачи (с некоторой фиксированной предварительно заполненной информацией) при сохранении модели.
В таблице "задачи" я просто хочу сохранить отношение к созданному проекту и "task_description", которое предопределено.
Я потерян здесь и надеюсь, что кто-нибудь может мне помочь. Если вам нужно что-то еще, дайте мне знать.
КОНТРОЛЛЕРProjectscontroller.php
public function actionCreate()
{
$model = new Projects();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['index']);
} elseif (Yii::$app->request->isAjax) {
return $this->renderAjax('_form', [
'model' => $model
]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
МОДЕЛЬ Projects.php
public function getTasks()
{
return $this->hasMany(Tasks::className(), ['parent_id' => 'id']);
}
2 ответа
Решение
Вы можете использовать что-то вроде ниже
public function actionCreate()
{
$model = new Projects();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$taskmodel=new YourTaskModel();
$taskmodel->project_id=$model->id; // will get inserted project id
$taskmodel->task_description='whateverdescription';
$taskmodel->save();
return $this->redirect(['index']);
} elseif (Yii::$app->request->isAjax) {
return $this->renderAjax('_form', [
'model' => $model
]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
В основном вы сохраняете задачу после сохранения проекта в БД.
Вы можете создавать задачи в методе afterSave вашего проекта:
public function afterSave($insert, $changedAttributes)
{
if ($insert) {
// create your tasks
}
return parent::afterSave($insert, $changedAttributes);
}