Yii:禁用乐观锁定

时间:2017-06-22 10:46:05

标签: php yii yii2 optimistic-locking

我在Yii应用程序中意外启用了乐观锁定功能。现在它引起了问题,我想禁用它。有没有一种无痛的方法(即更新我的模型和CRUD而不必再次创建它们)?

1 个答案:

答案 0 :(得分: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'));
        }
    

    ...