Auto Number Extension for Yii 2
Yii2 extension to genarete formated autonumber. It can be used for generate
document number., (*1)
This extension forked from mdm/yii2-autonumber with additional features., (*2)
Additional Features
- Ability to set db connection (for multiple databases)
public function behaviors()
{
return [
[
'class' => 'bahirul\yii2\autonumber\Behavior',
'db' => Yii::$app->db2, // set other database connection rather than default
'attribute' => 'sales_num', // required
'group' => $this->id_branch, // optional
'value' => 'SA.'.date('Y-m-d').'.?' , // format auto number. '?' will be replaced with generated number or you can use " 'value' => function($event){ return 'SA.'.date('Y-m-d').'.?' } " as long the return value contain '?' character
'digit' => 4 // optional, default to null.
],
];
}
Installation
The preferred way to install this extension is through composer., (*3)
Either run, (*4)
php composer.phar require --prefer-dist bahirul/yii2-autonumber "~1.0"
or add, (*5)
"bahirul/yii2-autonumber": "~1.0"
to the require section of your composer.json
file., (*6)
Usage
Prepare required table by execute yii migrate., (*7)
yii migrate --migrationPath=@bahirul/yii2/autonumber/migrations
if wantn't use db migration. you can create required table manually., (*8)
CREATE TABLE auto_number (
"group" varchar(32) NOT NULL,
"number" int,
optimistic_lock int,
update_time int,
PRIMARY KEY ("group")
);
Once the extension is installed, simply modify your ActiveRecord class:, (*9)
public function behaviors()
{
return [
[
'class' => 'bahirul\yii2\autonumber\Behavior',
'db' => Yii::$app->db2, // set other database connection rather than default
'attribute' => 'sales_num', // required
'group' => $this->id_branch, // optional
'value' => 'SA.'.date('Y-m-d').'.?' , // format auto number. '?' will be replaced with generated number or you can use " 'value' => function($event){ return 'SA.'.date('Y-m-d').'.?' } " as long the return value contain '?' character
'digit' => 4 // optional, default to null.
],
];
}
// it will set value $model->sales_num as 'SA.2014-06-25.0001'
Instead of behavior, you can use this extension as validator, (*10)
public function rules()
{
return [
[['sales_num'], 'autonumber', 'format'=>'SA.'.date('Y-m-d').'.?'],
...
];
}