mdmsoft/yii2-autonumber

为Yii框架提供的自动编号扩展

安装次数: 28 116

依赖项: 8

建议者: 0

安全性: 0

星标: 17

关注者: 7

分支: 17

开放问题: 1

类型:yii2-extension

1.5.2 2019-11-20 02:29 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:09:12 UTC


README

Yii2扩展,用于生成格式化的自动编号。它可以用于生成文件编号。

安装

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

运行以下命令之一:

php composer.phar require --prefer-dist mdmsoft/yii2-autonumber "~1.0"

"mdmsoft/yii2-autonumber": "~1.0"

将以下内容添加到您的 composer.json 文件的 require 部分中。

使用方法

通过执行 yii migrate 准备所需的表。

yii migrate --migrationPath=@mdm/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' => 'mdm\autonumber\Behavior',
            'attribute' => 'sales_num', // required
    		'group' => $this->id_branch, // optional
    		'value' => 'SA.'.date('Y-m-d').'.?' , // format auto number. '?' will be replaced with generated number
    		'digit' => 4 // optional, default to null. 
    	],
    ];
}

// it will set value $model->sales_num as 'SA.2014-06-25.0001'

您可以将此扩展用作验证器而不是行为

public function rules()
{
    return [
        [['sales_num'], 'autonumber', 'format'=>'SA.'.date('Y-m-d').'.?'],
        ...
    ];
}

新格式

从版本 1.5 开始,我们引入了新的数字格式。现在我们使用 {} 来评估日期,而数字的位数则表示为 ? 的数量。

public function rules()
{
    return [
        [['sales_num'], 'autonumber', 'format' => 'SA/{Y/m}/?.???'],
        ...
    ];
}

// it will set value $model->sales_num as 'SA/2019/10/0.001'


public function behaviors()
{
    return [
        [
            'class' => 'class' => 'mdm\autonumber\Behavior',
            'attribute' => 'sales_num', // required
            'value' => 'SA/{Y/m}/?.???'
        ]
    ];
}

// another usage

public function actionCreate()
{
    $model = new Sales()
    $model->load(Yii::$app->request->post());
    $model->sales_num = mdm\autonumber\AutoNumber::generate('SA/{Y/m}/?.???');
    ...
}