CakePHP中的乐观记录锁定

时间:2013-06-14 08:39:18

标签: model cakephp-2.0 behavior optimistic-locking

我已经开始玩CakePHP了,我试图在记录中建立一些乐观的锁定,我发现这些记录不在核心。在Apress书籍 Practical CakePHP 项目中,有一个例子可以使用" lock"在行为中创建乐观锁定。领域。这是为CakePHP 1.2编写的,我使用2.0,我也希望使用"修改"字段而不是锁定的单独字段。

我打算做的是查看检索记录中的修改日期,然后查看 beforeValidate 函数,将其与数据库中的内容进行比较。如果它不同,则其他人可以访问该记录,因此生成异常。

我的功能是

function beforeValidate(&$model) {
    // First find the record
    if (isset($model->data[$model->name]['id']) ){
        $id = $model->data[$model->name]['id'];
        $table = $model->table;
        $currentRecord = $model->find('all', array('conditions'=>array('id'=>$id)));

        if(!empty($currentRecord)) {
            if($model->data[$model->name]['modified'] != $currentRecord[0][$table]['modified']) {
                $model->validationErrors['modified'] = 'Update conflict, another user has already updated the record. Please list and edit the record again.';
                return false;
            }
        }
    }
    return true;
}

我发现的是当我尝试运行此操作时出现以下错误

Notice (8): Undefined index: modified [APP/Model/Behavior/MagicFieldsPlusBehavior.php, line 21]
Notice (8): Undefined index: schools [APP/Model/Behavior/MagicFieldsPlusBehavior.php, line 21]

"学校"作为表和"修改"该领域 - 是的他们出现了: - )

第21行是

if($model->data[$model->name]['modified'] != $currentRecord[0][$table]['modified']) {

提前感谢您帮助调试新手的错误!

布赖恩

0 个答案:

没有答案