Problem with checkbox Yii2

Good day

I have a problem with a checkbox that I bring from the database, every time I update the form, it creates a new record repeated, for example, I have the accident-mechanism table
where I keep the ID variables, mechanism, enabled, the ID variable comes from the accident model, it is automatically registered depending on the model that is being updated, I have the mechanism variable that is filled depending on what is selected in the checkbox and the enabled variable that is filled with 1, I need that if the accident record: 1, mechanism: 90 and enabled: 1 exists it does not duplicate every time I give it update, but if I register the new option checked

if (empty(Yii::$app->request->post(‘agentes’))) {
Yii::$app->getSession()->setFlash(‘error’, ‘Verifique que haya seleccionado al menos una opción en cada campo de selección.’);
} else
foreach (Yii::$app->request->post(‘agentes’) as $key => $agentes) {
$modelagentes = new Agente();
$modelagentes->accidente = $model->id;
$modelagentes->agente = $agentes;
$modelagentes->habilitado = “1”;
if (!$modelagentes->save()) {
print_r($modelagentes->errors);
}
}

This is the portion of code that registers the selection

$modelagentes = Agente::find()->select('agente')->where(['accidente' => $model->id])->all();
    $agentes = [];
    foreach ($modelagentes as $key => $agente) {
        $agentes[] = $agente->agente;
    }

This is the portion of code that brings the data and checks the checkbox fields when I perform the update

How can I validate that if the selected record is already saved in the database, skip it and register the new checked record?

Good evening

This is the code I use to validate the checkbox records, I also put the complete code on how to put them to work with register and update

Create

public function actionCreate() {
    $model = new Accidentes();
    $sublistas = new Sublistas();
    $mecanismo = [];
    $parte_afectada = [];
    $tipo_lesion = [];
    $agentes = [];
    if ($model->load(Yii::$app->request->post())) {
        $model->documento = UploadedFile::getInstances($model, 'documento');
        $model->estado = "1";
        $mecanismo = Yii::$app->request->post('mecanismo');
        $parte_afectada = Yii::$app->request->post('afectacion');
        $agentes = Yii::$app->request->post('agentes');
        $tipo_lesion = Yii::$app->request->post('tipo_lesion');
        if (empty(Yii::$app->request->post('mecanismo'))) {
            Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
        } else
        if (empty(Yii::$app->request->post('tipo_lesion'))) {
            Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
        } else
        if (empty(Yii::$app->request->post('afectacion'))) {

            Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
        } else
        if (empty(Yii::$app->request->post('agentes'))) {
            Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
        } else
        if ($model->save()) {
            $modellogs = new Logs();
            $modellogs->id_update = $model->id;
            $modellogs->tabla = $model->tableName();
            $modellogs->usuario = Yii::$app->user->identity->user_id;
            $modellogs->descripcion = "Creación " . " " . "ID " . $model->id . " " . $model->descripcion;
            $modellogs->accion = "create";
            $modellogs->save();
            foreach (Yii::$app->request->post('afectacion') as $key => $parte_afectada) {
                $modelafectacion = new Afectacion();
                $modelafectacion->accidente = $model->id;
                $modelafectacion->parte_afectada = $parte_afectada;
                $modelafectacion->habilitado = "1";
                if (!$modelafectacion->save()) {
                    print_r($modelafectacion->errors);
                }
            }
            foreach (Yii::$app->request->post('mecanismo') as $key => $mecanismos) {
                $modelmecanismos = new Mecanismos();
                $modelmecanismos->accidente = $model->id;
                $modelmecanismos->mecanismo = $mecanismos;
                $modelmecanismos->habilitado = "1";
                if (!$modelmecanismos->save()) {
                    print_r($modelmecanismos->errors);
                }
            }
            foreach (Yii::$app->request->post('tipo_lesion') as $key => $tipo_lesion) {
                $modeltipo_lesion = new TipoLesion();
                $modeltipo_lesion->accidente = $model->id;
                $modeltipo_lesion->tipo_lesion = $tipo_lesion;
                $modeltipo_lesion->habilitado = "1";
                if (!$modeltipo_lesion->save()) {
                    print_r($modeltipo_lesion->errors);
                }
            }
            foreach (Yii::$app->request->post('agentes') as $key => $agentes) {
                $modelagentes = new Agente();
                $modelagentes->accidente = $model->id;
                $modelagentes->agente = $agentes;
                $modelagentes->habilitado = "1";
                if (!$modelagentes->save()) {
                    print_r($modelagentes->errors);
                }
            }
            if (!file_exists(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id)) {
                mkdir(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id, 0777, true);
            }
            if ($model->documento && $model->validate()) {
                foreach ($model->documento as $documento) {
                    $documento->saveAs(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/' . $documento->baseName . '.' . $documento->extension);
                }
            }
            return $this->redirect(['update', 'id' => $model->id]);
        } else {
            //print_r($model->errors);
            //print_r($modellogs->errors);
        }
    }
    return $this->render('create', [
                'model' => $model,
                'sublistas' => $sublistas,
                'mecanismo' => $mecanismo,
                'tipo_lesion' => $tipo_lesion,
                'parte_afectada' => $parte_afectada,
                'agentes' => $agentes,
                ''
    ]);
}

Update

    public function actionUpdate($id) {
    $model = $this->findModel($id);
    $sublistas = new Sublistas();
    $modeltestigos = new Testigos();
    $searchModel = new TestigosSearch();
    $dataProvider = $searchModel->search($id);
    //Mecanismo
    $modelmecanismo = Mecanismos::find()->select('mecanismo')->where(['accidente' => $model->id])->andWhere(['habilitado' => '1'])->all();
    $mecanismo = [];
    foreach ($modelmecanismo as $key => $mecanismos) {
        $mecanismo[] = $mecanismos->mecanismo;
    }
    //Tipo de Lesion
    $modeltipo_lesion = TipoLesion::find()->select('tipo_lesion')->where(['accidente' => $model->id])->andWhere(['habilitado' => '1'])->all();
    $tipo_lesion = [];
    foreach ($modeltipo_lesion as $key => $lesiones) {
        $tipo_lesion[] = $lesiones->tipo_lesion;
    }
    //Parte Afectada
    $modelafectacion = Afectacion::find()->select('parte_afectada')->where(['accidente' => $model->id])->andWhere(['habilitado' => '1'])->all();
    $parte_afectada = [];
    foreach ($modelafectacion as $key => $afectacion) {
        $parte_afectada[] = $afectacion->parte_afectada;
    }
    //Agente Accidente
    $modelagentes = Agente::find()->select('agente')->where(['accidente' => $model->id])->andWhere(['habilitado' => '1'])->all();
    $agentes = [];
    foreach ($modelagentes as $key => $agente) {
        $agentes[] = $agente->agente;
    }
    if ($modeltestigos->load(Yii::$app->request->post())) {
        $modeltestigos->documento = UploadedFile::getInstances($modeltestigos, 'documento');
        $modeltestigos->habilitado = "1";
        $modeltestigos->accidente = $model->id;
        if ($modeltestigos->save()) {
            $modellogs = new Logs();
            $modellogs->id_update = $modeltestigos->id;
            $modellogs->tabla = $modeltestigos->tableName();
            $modellogs->usuario = Yii::$app->user->identity->user_id;
            $modellogs->descripcion = "Creación Testigo " . $modeltestigos->id;
            $modellogs->accion = "create";
            if (!$modellogs->save()) {
                
            }
            if (!file_exists(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/testigos/' . $modeltestigos->id)) {
                mkdir(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/testigos/' . $modeltestigos->id, 0777, true);
            }
            if ($modeltestigos->documento && $modeltestigos->validate()) {
                foreach ($modeltestigos->documento as $documento) {
                    $documento->saveAs(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/testigos/' . $modeltestigos->id . '/' . $documento->baseName . '.' . $documento->extension);
                }
            }
            return $this->redirect(Yii::$app->request->referrer);
        } else {
            Yii::$app->getSession()->setFlash($modeltestigos->errors);
        }
    }
    if ($model->load(Yii::$app->request->post())) {
        $model->estado = "1";
        $model->habilitado = "1";
        $model->documento = UploadedFile::getInstances($model, 'documento');
        if ($model->save()) {
            $modellogs = new Logs();
            $modellogs->id_update = $model->id;
            $modellogs->tabla = $model->tableName();
            $modellogs->usuario = Yii::$app->user->identity->user_id;
            $modellogs->descripcion = "Actualización " . " " . $model->id . " " . $model->descripcion;
            $modellogs->accion = "update";
            $modellogs->save();
            if (empty(Yii::$app->request->post('tipo_lesion'))) {
                Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
            } else
                TipoLesion::updateAll(['habilitado' => "0"], "accidente = $model->id");
            foreach (Yii::$app->request->post('tipo_lesion') as $key => $tipo_lesion) {
                $modeltipo_lesion = TipoLesion::find()->where(['tipo_lesion' => $tipo_lesion])->one();
                if (empty($modeltipo_lesion)) {
                    $modeltipo_lesion = new TipoLesion();
                    $modeltipo_lesion->accidente = $model->id;
                    $modeltipo_lesion->tipo_lesion = $tipo_lesion;
                    $modeltipo_lesion->habilitado = "1";
                    if (!$modeltipo_lesion->save()) {
                        print_r($modeltipo_lesion->errors);
                    }
                } else {
                    $modeltipo_lesion->habilitado = "1";
                    $modeltipo_lesion->save();
                }
            }
            if (empty(Yii::$app->request->post('afectacion'))) {
                Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
            } else
                Afectacion::updateAll(['habilitado' => "0"], "accidente = $model->id");
            foreach (Yii::$app->request->post('afectacion') as $key => $afectacion) {
                $modelafectacion = Afectacion::find()->where(['parte_afectada' => $afectacion])->one();
                if (empty($modelafectacion)) {
                    $modelafectacion = new Afectacion();
                    $modelafectacion->accidente = $model->id;
                    $modelafectacion->parte_afectada = $afectacion;
                    $modelafectacion->habilitado = "1";
                    if (!$modelafectacion->save()) {
                        print_r($modelafectacion->errors);
                    }
                } else {
                    $modelafectacion->habilitado = "1";
                    $modelafectacion->save();
                }
            }
            if (empty(Yii::$app->request->post('mecanismo'))) {
                Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
            } else
                Mecanismos::updateAll(['habilitado' => "0"], "accidente = $model->id");
            foreach (Yii::$app->request->post('mecanismo') as $key => $mecanismo) {
                $modelmecanismo = Mecanismos::find()->where(['mecanismo' => $mecanismo])->one();
                if (empty($modelmecanismo)) {
                    $modelmecanismo = new Mecanismos();
                    $modelmecanismo->accidente = $model->id;
                    $modelmecanismo->mecanismo = $mecanismo;
                    $modelmecanismo->habilitado = "1";
                    if (!$modelmecanismo->save()) {
                        print_r($modelmecanismo->errors);
                    }
                } else {
                    $modelmecanismo->habilitado = "1";
                    $modelmecanismo->save();
                }
            }
            if (empty(Yii::$app->request->post('agentes'))) {
                Yii::$app->getSession()->setFlash('error', 'Verifique que haya seleccionado al menos una opción en cada campo de selección.');
            } else
                Agente::updateAll(['habilitado' => "0"], "accidente = $model->id");
            foreach (Yii::$app->request->post('agentes') as $key => $agentes) {
                $modelagentes = Agente::find()->where(['agente' => $agentes])->one();
                if (empty($modelagentes)) {
                    $modelagentes = new Agente();
                    $modelagentes->accidente = $model->id;
                    $modelagentes->agente = $agentes;
                    $modelagentes->habilitado = "1";
                    if (!$modelagentes->save()) {
                        print_r($modelagentes->errors);
                    }
                } else {
                    $modelagentes->habilitado = "1";
                    $modelagentes->save();
                }
            }
            if (!file_exists(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id)) {
                mkdir(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id, 0777, true);
            }
            if ($model->documento && $model->validate()) {
                foreach ($model->documento as $documento) {
                    if (!file_exists(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/' . $documento->baseName . '.' . $documento->extension)) {
                        $documento->saveAs(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/' . $documento->baseName . '.' . $documento->extension, true);
                    } else {
                        $documento->saveAs(Yii::$app->basePath . '/images/qhse/accidentes/' . $model->id . '/' . $documento->baseName . date("_YmdHis") . '.' . $documento->extension, true);
                    }
                }
            }
            //return $this->redirect(['update', 'id' => $model->id]);
        }
    }
    return $this->render('update', [
                'model' => $model,
                'modeltestigos' => $modeltestigos,
                'sublistas' => $sublistas,
                'mecanismo' => $mecanismo,
                'tipo_lesion' => $tipo_lesion,
                'parte_afectada' => $parte_afectada,
                'agentes' => $agentes,
                'dataProvider' => $dataProvider
                    //'documento'=>$documento
    ]);
}

In the code there is also the way to generate logs for each action and file upload