bhoft / yii2-autonumber
为 Yii 框架的自动编号扩展
1.5
2019-04-17 08:18 UTC
Requires
- yiisoft/yii2: ~2.0
README
Yii2 扩展,用于生成格式化的自动编号。可用于生成文档编号。
此扩展是从 mdm/yii2-autonumber 分支出来的,并进行了某些修改。
修改点:增加 targetClass
属性,使得扩展也能用于不同的扩展类,例如 MyModel、MyModelForm,并且仍然可以获得相同的自动编号;group
现在可以是一个模型属性、函数或类函数;format
设置自动编号的格式;db
设置不同的数据库。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令
php composer.phar require --prefer-dist bhoft/yii2-autonumber "~1.0"
或者在您的 composer.json
文件的 require 部分添加以下内容
"bhoft/yii2-autonumber": "~1.0"
使用方法
通过执行 yii migrate 准备所需的表。
yii migrate --migrationPath=@bhoft/yii2/autonumber/migrations
如果不使用数据库迁移,您可以手动创建所需的表。
CREATE TABLE auto_number ( "group" varchar(32) NOT NULL, "number" int, optimistic_lock int, update_time int, PRIMARY KEY ("group") );
一旦安装了扩展,只需修改您的 ActiveRecord 类
public function behaviors() { return [ [ 'class' => 'bhoft\yii2\autonumber\Behavior', 'targetClass' => 'app\models\MyModel', // optional default OwnerClassname 'attribute' => 'sales_num', // required 'group' => 'groupAttribute', // optional // or as class function // 'group' => array($this, 'getGroupId'), // // or // 'group' => $this->groupId'), // 'format' => 'SA.'.date('Y-m-d').'.?' , // format auto number. '?' will be replaced with generated number //you could also use " 'format' => function($event){ return 'SA.'.date('Y-m-d').'.?' } " 'digit' => 4 // optional, default to null. //'db' => Yii::app()->db, // optional ], ]; } // it will set value $model->sales_num as 'SA.2014-06-25.0001'
您可以将此扩展用作验证器,而不是行为
use bhoft\autonumber\AutonumberValidator; ... public function rules() { return [ [['sales_num'], AutonumberValidator::className(), 'format'=>'SA.'.date('Y-m-d').'.?'], ... [['submission_num'], AutonumberValidator::className(), 'format'=>'?', 'targetClass' => 'app\models\MyModel', 'group' => 'call_id'], ]; }