Model 在一个功能中删除带有外键的两个型号

Model 在一个功能中删除带有外键的两个型号,model,foreign-keys,yii2,relationship,Model,Foreign Keys,Yii2,Relationship,我想在一个函数中删除两个模型。但是这个模型有关系,我试着这样做: public function actionDelete($id) { $this->findModel($id); return $this->redirect(['index']); } protected function findModel($id) { if (($model = UrUser::findOne($id)) !== nul

我想在一个函数中删除两个模型。但是这个模型有关系,我试着这样做:

public function actionDelete($id) {
        $this->findModel($id);


        return $this->redirect(['index']);
    }


    protected function findModel($id) {
        if (($model = UrUser::findOne($id)) !== null) {
        $RoyalUserData=$model->Rel_RoyalUserData;
        $data= UserData::find()->where(['Id' => $RoyalUserData])->one();
        if($model->delete() && $data->delete()){
        return $this->redirect(['index']);}
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }
或者这样:

 public function actionDelete($id) {

        $this->findModel($id)->delete();
        $this->findRoyalUserData($id)->delete();

        return $this->redirect(['index']);
    }

    protected function findModel($id) {
        if (($model = UrUser::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }
    protected function findRoyalUserData($id) {
        if (($model = UrUser::findOne($id)) !== null) {
        $RoyalUserData=$model->Rel_RoyalUserData;
        $data= UserData::find()->where(['Id' => $RoyalUserData])->one();

        return $data;
        } else {
            throw new NotFoundHttpException('data not exist.');
        }
    }
但当我删除第一个模型时,我得到了

抛出新的NotFoundHttpException('数据不存在')


因为我试图引用一个不再存在的对象,因为它刚刚被移除。另一方面,当我第一次尝试删除RoyalUserData时,我遇到了foreing键错误。要同时删除此模型,我应该做些什么?

交换删除顺序。首先删除子模型,然后删除父模型:

$data = UserData::find()->where(['Id' => $RoyalUserData])->one();
if ($data->delete() && $model->delete()) {
    return $this->redirect(['index']);
}

完整性约束冲突–yii\db\IntegrityException SQLSTATE[23000]:完整性约束冲突:1451无法删除或更新父行:外键约束失败
则您有另一条具有相同外键的记录。您需要先删除所有子记录,然后才能删除父记录。您能解释一下这种关系吗?我在这里看到三个表,您只想删除其中的两个,对吗?
UrUser
RoyalUserData
UserData
之间的关系是什么?