Доброго времени суток товарищи!
Имеется таблица машин (car[car_id,....,car_options_id]), есть таблица опций для каждой машины (car_options[car_options_id,....])
В миграции прописано создание ключа
$this->addForeignKey('FK_car_options', 'car', 'car_options_id', 'car_options', 'car_options_id', 'RESTRICT', 'RESTRICT');
В модели указано правило
[['car_user_id', 'car_options_id'], 'required'],
Следовательно, при создании машины необходимо указывать уже существующий id опций, что временно переросло в:
public function actionCreate()
{
$carModel = new Car();
$carOptionsModel = new CarOptions();
//ставится временный id
$carOptionsModel->car_options_id = 1;
if (
$carModel->load(Yii::$app->request->post()) && $carOptionsModel->load(Yii::$app->request->post())
) {
if ($carModel->validate() && $carOptionsModel->validate()) {
//Обнуляется при сохранении
$carOptionsModel->car_options_id = null;
$carOptionsModel->save();
$carModel->car_options_id = $carOptionsModel->car_options_id;
$carModel->save();
}
return $this->redirect(['view', 'id' => $carModel->car_id]);
} else {
return $this->render('create', [
'model' => $carModel,
'carOptions' => $carOptionsModel
]);
}
}
Но что-то подсказывает, что это не самое верное решение, и должен быть более правильный вариант. Как правильно поступить в этой ситуации?