2017-06-22 97 views
0

我已經在我的Yii應用程序中啓用了樂觀鎖定功能。現在它引起了問題,我想禁用它。有沒有一種無痛的方式來做到這一點(即更新我的模型和CRUD,而不必再次創建它們)?Yii:禁用樂觀鎖定

回答

0

如何使用OptimisticLockingActiveRecord:

  1. 繼承OptimisticLockingActiveRecord類模型

    class MyModel extends OptimisticLockingActiveRecord 
    
    
    { 
        ... 
    
    
    } 
    
  2. 樂觀鎖定字段添加到更新表單視圖文件:

    <?php $form=$this->beginWidget('CActiveForm'); ?> 
    
    
    <?php echo $form->hiddenField($model, 'lock_version'); ?> 
    
    
    <?php echo $form->error($model, 'lock_version'); ?> 
        ... 
    
  3. 手柄控制器中的StaleObjectError:

    ...

    if (isset($_POST['MyModel'])) { 
    
    
    $model->attributes = $_POST['SiteSettingsData']; 
    
    
    $model->lock_version = $_POST['MyModel']['lock_version']; 
    
        try { 
         $model->save(); 
        } catch(StaleObjectError $e) { 
         $model->addError('lock_version', 
          Yii::t('app', 'Site settings have been updated by another user')); 
        } 
    

    ...