/ / Cómo aplicar la eliminación en cascada usando el modelo yii - php, yii

Cómo aplicar la eliminación en cascada usando el modelo yii - php, yii

Tengo 3 mesas que dependen unas de otras.

1st level = partner_company
2nd level = partner
3rd level =  partner_deals

En 1er nivel tenemos "id". 2do nivel tiene "company_id"que es la clave externa de partner_company"id". 3er nivel tiene "partner_id"que es la clave externa de la tabla asociada (2do nivel)"id".

=> ahora quiero agregar la funcionalidad de cualquier empresa de eliminación de usuario que tenga id = 1 luego, también elimine todos los registros de la tabla de segundo nivel y la compañía de tercer nivel.

=> Si el administrador borra el registro del socio (2do nivel) que tiene id = 1 luego borre el registro de partner_deals (3er nivel) que tiene partner_id = 1.

Entonces, ¿alguien puede ayudarme a agregar esta funcionalidad?

Gracias

Respuestas

1 para la respuesta № 1

Puedes anular beforeDelete para que se borren primero los registros que sean dependientes.

En tus partner_company modelo hacer una relación con partner modelo

public function getPartner(){
return $this->hasOne(Partner::className(), ["id" => "company_id"]);
}

public function beforeDelete() {
$this->partner->delete();

// call the parent implementation so that this event is raise properly
return parent::beforeDelete();
}

Haz lo mismo con los otros dos modelos. partner y partner_deals