public function beforeDelete() { ProveedoresContacto::deleteAll('proveedorid =' . $this->proveedor_id); return parent::beforeDelete(); // TODO: Change the autogenerated stub }
/** * Updates an existing Proveedores model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); $modelsContactos = $model->proveedoresContactos; if ($model->load(Yii::$app->request->post())) { // Lista todos los contactos $oldIDs = ArrayHelper::map($modelsContactos, 'pcontacto_id', 'pcontacto_id'); $modelsContactos = Model::createMultiplepcontacto(ProveedoresContacto::classname(), $modelsContactos); Model::loadMultiple($modelsContactos, Yii::$app->request->post()); $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsContactos, 'pcontacto_id', 'pcontacto_id'))); // validate all models $valid = $model->validate(); // Debido a que el campo dependenciaid no se captura ( y es un campo obligatorio) $valid = Model::validateMultiple($modelsContactos, ['nombre', 'apellido', 'telefono', 'celular', 'email']) && $valid; // Modificando los contactos if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { if ($flag = $model->save(false)) { if (!empty($deletedIDs)) { ProveedoresContacto::deleteAll(['pcontacto_id' => $deletedIDs]); } foreach ($modelsContactos as $modelContacto) { $modelContacto->proveedorid = $model->proveedor_id; if (!($flag = $modelContacto->save(false))) { $transaction->rollBack(); break; } } } if ($flag) { $transaction->commit(); return $this->redirect(['index']); } } catch (Exception $e) { $transaction->rollBack(); } } } else { return $this->render('update', ['model' => $model, 'modelsContactos' => empty($modelsContactos) ? [new ProveedoresContacto()] : $modelsContactos]); } }