yii-dream-team/yii2-lockable-activerecord

为 Yii2 ActiveRecord 提供悲观锁定行为

1.0.5 2017-08-03 09:15 UTC

This package is auto-updated.

Last update: 2024-09-17 19:21:03 UTC


README

本包允许在使用 ActiveRecord 模型时使用悲观锁定(select for update)。

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一

php composer.phar require --prefer-dist yii-dream-team/yii2-lockable-activerecord "*"

或者将以下内容添加到你的 composer.json 文件的 require 部分。

"yii-dream-team/yii2-lockable-activerecord": "*"

require

使用

将行为附加到你的控制器类。

public function behaviors()
{
    return [
        '\yiidreamteam\behaviors\LockableActiveRecord',
    ];
}

在你的类定义中添加 @mixin phpdoc。

/**
 * Class Sample
 * @package common\models
 *
 * @mixin \yiidreamteam\behaviors\LockableActiveRecord
 */
class Sample extends ActiveRecord { ... }

在事务中使用模型锁定。

$dbTransaction = $model->getDb()->beginTransaction(\yii\db\Transaction::SERIALIZABLE);
try {
    $model->lock();
    $model->doSomethingWhileLocked();
    $dbTransaction->commit();
} catch(\Exception $e) {
    $dbTransaction->rollBack();
    throw $e;
}

许可证

MIT

链接