网站首页 > 开源技术 正文
Yii2 的 ActiveQuery 默认不支持 MySQL 的行锁。于是扩展了一下。 欢迎来搞。
Yii2 Lockable ActiveQuery
This package allows you to use pessimistic locking (select for update) when you work with ActiveRecord Query.
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist amoydavid/yii2lockable-query "*"
or add
"amoydavid/yii2lockable-query": "*"
to the require section of your composer.json.
Usage
Set schema map for database connection
<?php return [ 'class' => 'yii\db\Connection', 'schemaMap' => [ 'mysql' => '\amoydavid\Yii2LockableQuery\mysql\Schema', // set up mysql schema ], 'dsn' => 'mysql:host=localhost;dbname=yii', 'username' => 'root', 'password' => '', 'charset' => 'utf8', // Schema cache options (for production environment) //'enableSchemaCache' => true, //'schemaCacheDuration' => 60, //'schemaCache' => 'cache', ];
Extend your ActiveRecord class via \amoydavid\Yii2LockableQuery\ActiveRecord
/**
* Class Sample
* @package common\models
*
*/
class Sample extends \amoydavid\Yii2LockableQuery\ActiveRecord { ... }
Use model locks in transaction.
$dbTransaction = Yii::$app->db->beginTransaction(); try { $model = Sample::find()->where(['id'=>1])->forUpdate()->one(); $dbTransaction->commit(); } catch(\Exception $e) { $dbTransaction->rollBack(); throw $e; }
猜你喜欢
- 2024-09-11 少年歌行。第2部。萧崇登基后……
- 2024-09-11 少年歌行2:司空千落怀孕,萧瑟居然要娶别人为妻
- 2024-09-11 YII框架学习(新手)NO.2(yii框架设计模式)
- 2024-09-11 yii安装与使用详解(easy_install安装)
- 2024-09-11 小编教你 YII2框架模块如何绑定二级域名
- 2024-09-11 一款基于Yii2+Vue2.0+uniapp的开源商城
- 2024-09-11 Yii2开发中js冲突 如何禁用自带的 yii、jquery 和 bootstrap
- 2024-09-11 一款基于Yii2开发的免费商城系统(开发一款游戏的步骤)
- 2024-09-11 Yii2连接pgsql,设置默认schema(sqlplus默认连库)
- 2024-09-11 php生命周期、Laravel生命周期、Yii2生命周期、ThinkPHP生命周期
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)