sql >> データベース >  >> RDS >> Mysql

Yiiの関連モデル(リレーショナルテーブル)の更新と削除

    更新

    1対1の関係しかないようです。その場合は、$qをリンクするだけで済みます。 特定の資格へ:

    public function actionUpdate()
       {
        //load model
        $q=&$model->qualifications[0];
        if (isset($_POST['Candidate'], $_POST['Qualification'])) {
            $model->attributes=$_POST['Candidate'];
            $q->attributes=$_POST['Qualification'];
    
            $error = false;
            $transaction = Yii::app()->db->beginTransaction();
            try {
                if (!$model->save()) {
                    throw new CException(CHtml::errorSummary($model));
                }
                if (!$q->save()) {
                    throw new CException(CHtml::errorSummary($q));
                    echo $error;
                }
                $transaction->commit();
            } catch (Exception $e) {
                $transaction->rollBack();
                $error = $e->getMessage();
            }
    
            if (!$error) {
                $this->redirect(array('view','id'=>$model->id));
            }
        }
    

    いくつかの調整、つまりループと表形式のデータ入力 上記のコードは1対多で機能します。

    削除

    削除の場合は、Candidate::beforeDelete()を編集します 次のように、それにリンクされているすべての資格を削除します。

    public function beforeDelete(){
        foreach($this->qualifications as $q)
            $q->delete();
        return parent::beforeDelete();
    }
    

    Candidate::delete()への呼び出しをラップする必要があります トランザクションで。




    1. MySQLdbでのSQLAlchemyの目的

    2. テーブルから数えますが、特定の数で数えるのをやめます

    3. Oracle:テーブルに属するすべてのトリガーを検索するSQLクエリ?

    4. com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:キー'PRIMARY'の重複エントリ''