@william_stoltenberg
Yii2 предоставляет удобный способ реализовать сохранение в моделях many-to-many через связь между моделями. Для этого вам нужно создать таблицу промежуточных моделей, которая будет хранить связи между двумя моделями.
Вот пример кода, который демонстрирует реализацию сохранения в many-to-many:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
// Модель для первой таблицы class FirstModel extends ActiveRecord { public function rules() { return [ // ... ]; } // Связь с второй таблицей public function getSecondModels() { return $this->hasMany(SecondModel::className(), ['id' => 'second_model_id']) ->viaTable('first_model_second_model', ['first_model_id' => 'id']); } } // Модель для второй таблицы class SecondModel extends ActiveRecord { public function rules() { return [ // ... ]; } // Связь с первой таблицей public function getFirstModels() { return $this->hasMany(FirstModel::className(), ['id' => 'first_model_id']) ->viaTable('first_model_second_model', ['second_model_id' => 'id']); } } // Контроллер class FirstModelController extends Controller { public function actionCreate() { $firstModel = new FirstModel(); if ($firstModel->load(Yii::$app->request->post()) && $firstModel->save()) { // Сохранение связи между моделями $selectedSecondModels = Yii::$app->request->post('SecondModel'); $first |