ClientFace(id,name1, name2, name3), //контактное лицо
ClientFirm(id,name,inn),//фирма
ClientFaceXClientFirm(id,client_face_id,client_firm_id)//связующая таблица с внешними ключами
//При добавление контактного лица, может быть get параметр с id фирмы(если добавляем из просмотра фирмы) для связующей таблицы.
ClientFaceController
public function actionCreate()
{
$model = new ClientFace();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
if(!empty($_GET['firm']) && $firm = (int)$_GET['firm']) {
$via = new ClientFaceXClientFirm();
if($via->load(['ClientFaceXClientFirm' =>
[
'client_face_id' => $model->id,
'client_firm_id' => $firm,
]
]) && $via->save()) {
return $this->redirect(['firm/view', 'id' => $firm]);
}
}
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
Все прекрасно работает!
Есть сомнения в правильности кода и нужно ли выносить в модель запись в связующую таблицу?