Удаление связанных моделей в yii2

Когда я открываю "страницу обновления", у меня динамически появляются строки, которые сохраняются в БД. Но как мне удастся удалить строки в actionUpdate, чтобы удалить их в БД. Удаленные элементы находятся в массиве с идентификатором удаленных идентификаторов

 public function actionUpdate($id) {

    $model = Component::find()->where(['id' => $id])->one();

    $depModels = Dependency::find()->where(['component_id' => $id])->all();

    $tractorModels = ArrayHelper::map(Tractormodel::find()->all(), 'id', 'model');

    $components = Component::find()->all();


    if ($model->load(Yii::$app->request->post()) && $model->save()) {

        $dependendComponents = Yii::$app->request->bodyParams['ids'];
        foreach ($dependendComponents as $dComp) {

            $dependencyModel = new Dependency();
            $dependencyModel->setAttributes([
                'count' => $dComp['quantity'],
                'component_id' => $model->id,
                'dependent_id' => $dComp['id']
            ]);
            $dependencyModel->save();
        }

        return $this->redirect(['index', 'id' => $model->id]);
    } else {
        return $this->render('update', [
                    'model' => $model, 'tractorModels' => $tractorModels,
                    'components' => $components, 'depModels' => $depModels,
        ]);
    }
}

а вот моя строка удаления jQUery в "_form"

wrapper.on("click", ".remove_field", function (e) {

        var wantedDiv = $(this).parent('div').children().first();
        var selectTag = $(wantedDiv).find('select');

        var clickedId = $(selectTag).find('[selected=""]').attr('value');

        var deletedIdsArray = $('#deletedIDs');

        console.log($('#deletedIDs'));

        if (clickedId) {
            $('#deletedIds').append('<input type="hidden" name="deletedIds[]" value="' + clickedId + '">');
        }

        e.preventDefault();
        $(this).parent('div').remove();
        x--;
    });

1 ответ

Вам нужно посмотреть, что вы получаете в Yii::$app->request->post(). Попробуйте var_dump(Yii::$app->request->post()). Если там ничего нет, вам нужно изменить форму ввода. http://www.yiiframework.com/doc-2.0/guide-input-forms.html

А если вы хотите удалить что-то из БД, лучше использовать другое действие: отправить данные из формы обновления в actionDelet и изменить логику метода в соответствии с вашими потребностями.

Другие вопросы по тегам