0

と の 2 つのテーブルがuserありuserProfileます。Yii Active Record を使用して、両方のテーブルからレコードを削除したいと考えています。

以下は私のコードです:

public function actionDelete($id) {
        $this->loadModel($id)->delete();
        $model = $this->loadModel($id);
        User::model()->deleteAll('user_id=:id', array(':id' => $model->user_id));

        // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
        if (!isset($_GET['ajax']))
            $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
    }

以下は、2 つのモデル間の関係です。

public function relations() {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'userProfiles' => array(self::HAS_MANY, 'UserProfile', 'user_id'),
        );
    }

public function relations() {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'user' => array(self::BELONGS_TO, 'User', 'user_id'),
        );
    }

ここで最初に userProfile テーブルからレコードを削除しています (正常に動作しています)。その後、user_idそのモデルから を取得し、それを deleteAll メソッドに渡すことで、userテーブルからレコードを削除しようとしていますが、エラーが返されerror 404 the requested page does not exist.ます。

適切な削除方法ですか?またはどこが間違っているのですか?

ありがとう

4

3 に答える 3

1

何が起こっているかを確認するには、レコードを削除した後、すでに削除されているそのモデルの情報を再度取得しようとしているため、エラーエラーが発生します404 the requested page does not exist .

それを達成したい場合は、別の変数で削除しているモデルのIDを取得し、さらにその変数を使用して別のレコードを削除する必要があります

于 2013-08-13T09:51:13.273 に答える
0

deleteAllメソッドの障害ではありません。ここでレコードを削除し$idます:

 $this->loadModel($id)->delete();

それからあなたは電話します

$this->loadModel($id);

loadmodel メソッドには、次のコードがあります。

if($model===null)
        throw new CHttpException(404,'The requested page does not exist.');

すでに削除しているため、null でエラーが発生します。

作っloadmodel($id)->deleteてから

$model=User::model()->find('id=:id',array(':id'=>$id));
$model->delete();

これは必要に応じて機能します。

于 2013-08-13T07:56:15.257 に答える