Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cập nhật và xóa các Mô hình có Liên quan (Bảng quan hệ) trong Yii

CẬP NHẬT

Có vẻ như, bạn chỉ có mối quan hệ một-một nên nếu rơi vào trường hợp đó, bạn chỉ phải liên kết $q đối với trình độ chuyên môn cụ thể:

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));
        }
    }

Với một số chỉnh sửa, tức là vòng lặp và nhập dữ liệu dạng bảng mã trên có thể hoạt động cho một-nhiều.

XÓA

Để xóa, hãy chỉnh sửa Candidate::beforeDelete() để xóa tất cả các bằng cấp được liên kết với nó như sau:

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

Bạn nên kết thúc cuộc gọi đến Candidate::delete() trong một giao dịch.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các khung nhìn và bảng ánh xạ JPA có tính kế thừa

  2. Làm cách nào để loại bỏ dấu gạch chéo ngược (\) trong phản hồi json bằng php?

  3. Cách khắc phục sự cố trình xác định MySQL

  4. Thay đổi bảng hoặc đặt lại tự động tăng bằng CDbMigration

  5. Bảo mật máy chủ MySQL