alfa6661/laravel-autonumber

Laravel 包,用于为 Eloquent 模型创建自增编号

1.2.5 2022-08-09 02:31 UTC

This package is auto-updated.

Last update: 2024-09-09 07:07:02 UTC


README

Latest Stable Version Total Downloads StyleCI License

Laravel 包,用于为 Eloquent 模型创建自增编号

安装

您可以通过 composer 安装此包

composer require alfa6661/laravel-autonumber

config/app.php 中注册 ServiceProvider

'providers' => [
    // ...
    Alfa6661\AutoNumber\AutoNumberServiceProvider::class,
],

发布默认配置

php artisan vendor:publish --provider='Alfa6661\AutoNumber\AutoNumberServiceProvider'

运行迁移

php artisan migrate

使用方法

您的 Eloquent 模型应使用 Alfa6661\AutoNumber\AutoNumberTrait 特性

该特性包含一个抽象方法 getAutoNumberOptions(),您必须自己实现。

use Alfa6661\AutoNumber\AutoNumberTrait;
    
class Order extends Model
{
    use AutoNumberTrait;
    
    /**
     * Return the autonumber configuration array for this model.
     *
     * @return array
     */
    public function getAutoNumberOptions()
    {
        return [
            'order_number' => [
                'format' => 'SO.?', // autonumber format. '?' will be replaced with the generated number.
                'length' => 5 // The number of digits in an autonumber
            ]
        ];
    }

}

您还可以传递一个 闭包 来设置格式值。

public function getAutoNumberOptions()
{
    return [
        'order_number' => [
            'format' => function () {
                return 'SO/' . date('Ymd') . '/?'; // autonumber format. '?' will be replaced with the generated number.
            },
            'length' => 5 // The number of digits in the autonumber
        ]
    ];
}

保存模型

$order = Order::create([
    'customer' => 'Mr. X',
]);

在保存 Order 模型时,将根据给定的格式自动生成 order_number。

echo $order->order_number;

// SO/20170803/00001

许可证

Laravel-autonumber 是开源软件,许可协议为 MIT 许可证

贡献

请将您在问题页面上发现的问题报告。拉取请求非常欢迎。