marcj/optimistic-locking-behavior

该包最新版本(dev-master)没有可用的许可证信息。

允许您在 Propel 2 中使用乐观锁的行为。

dev-master 2015-01-08 12:06 UTC

This package is auto-updated.

Last update: 2024-09-10 23:45:24 UTC


README

OptimisticLockingBehavior

用于 Propel2 的乐观锁行为。

用法

<table name="user">
    <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
    <column name="username" type="VARCHAR" size="100" primaryString="true" />
    <behavior name="optimistic_locking" />
</table>

如果您未通过 composer 安装此行为,则需要将完整类名指定为行为名称

    <behavior name="\MJS\OptimisticLocking\OptimisticLockingBehavior">

您可以定义不同的锁定列。默认为 version

<behavior name="optimistic_locking" />
    <parameter name="version_column" value="locked_version"/>
</behavior>
$user = UserQuery::create()->findById($id);
$user->setUsername('Secret');

try {
    $user->save();
} catch (\MJS\OptimisticLocking\StaleObjectException $e) {
    //react on that case. Maybe show the edit form again with a hint
    //or reload $user and apply again your changes.
}

if (!$user->optimisticSave(){ 
    //whoops, there was someone faster.
}

针对 Versionable 的说明

此行为与 versionable-behavior 兼容。请确保在 versionable 之前加载 optimistic_locking 行为。

<behavior name="optimistic_locking" />
<behavior name="versionable" />