muktar-sayedsaleh/laravel-custom-ids-generator

一个为 Laravel 开发者提供的 PHP 包,允许他们为任何模型生成自定义格式的 ID。

dev-main 2023-06-22 08:39 UTC

This package is auto-updated.

Last update: 2024-09-22 11:14:32 UTC


README

一个为 Laravel 开发者提供的 PHP 包,允许他们为任何模型生成自定义格式的 ID。

如何安装?

composer require muktar-sayedsaleh/laravel-custom-ids-generator

如何使用?

use MuktarSayedSaleh\LaravelCustomIds\IdsGenerator;
use App\Models\User;

$generator = new IdsGenerator();
$id = $generator->next(
    $model=User::class
);

// $id will be 000001
// Use the generated ID ($id) however you want.

IdsGenerator 参数

  1. $model: Laravel 模型类(必需)。
  2. $prefix: 所需的前缀(如有,可选,默认值: '')。
  3. $suffix: 所需的后缀(如有,可选,默认值: '')。
  4. $sequence_length: 所需的序列号长度(可选,默认值: 6)。
  5. $format: 生成 ID 所需的格式(可选,默认值: '{prefix}{sequence}{suffix}')。接受的占位符包括
    • {prefix} 前缀
    • {suffix} 后缀
    • {sequence} 序列号
    • {Y} 年份,格式为 YYYY
    • {y} 年份,格式为 YY
    • {F} 月份,格式为 January 到 December
    • {M} 月份的简写,格式为 Jan 到 Dec,三个字母
    • {m} 月份的数字表示,带前导零,格式为 01 到 12
    • {n} 月份的数字表示,不带前导零,格式为 1 到 12
    • {l} 月份的文本表示,格式为 Sunday 到 Saturday,三个字母
    • {D} 月份的文本表示,格式为 Mon 到 Sun,三个字母
    • {d} 月份的天数,两位数,带前导零,格式为 01 到 31
    • {j} 月份的天数,不带前导零,格式为 1 到 31
    • anyothertext 将按原样渲染
  6. $unique_field_name: $model 模型中的一个字段,该函数将比较以确保生成的 ID 之前未使用。

高级示例

自定义前缀

use MuktarSayedSaleh\LaravelCustomIds\IdsGenerator;
use App\Models\User;

$generator = new IdsGenerator();
$id = $generator->next(
    model: User::class,
    prefix: 'Monjz'
);

// $id will be Monjz000001
// Use the generated ID ($id) however you want.

自定义后缀

use MuktarSayedSaleh\LaravelCustomIds\IdsGenerator;
use App\Models\User;

$generator = new IdsGenerator();
$id = $generator->next(
    model: User::class,
    suffix: 'Monjz'
);

// $id will be 000001Monjz
// Use the generated ID ($id) however you want.

自定义前缀 & 后缀

use MuktarSayedSaleh\LaravelCustomIds\IdsGenerator;
use App\Models\User;

$generator = new IdsGenerator();
$id = $generator->next(
    model: User::class,
    prefix: 'Monjz',
    suffix: 'Monjz'
);

// $id will be Monjz000001Monjz
// Use the generated ID ($id) however you want.

自定义长度

use MuktarSayedSaleh\LaravelCustomIds\IdsGenerator;
use App\Models\User;

$generator = new IdsGenerator();
$id = $generator->next(
    model: User::class,
    sequence_length: 12
);

// $id will be 000000000001
// Use the generated ID ($id) however you want.

自定义格式

use MuktarSayedSaleh\LaravelCustomIds\IdsGenerator;
use App\Models\User;

$generator = new IdsGenerator();
$id = $generator->next(
    model: User::class,
    format: 'RFQS-{sequence}-2022'
);

// $id will be RFQS-000001-2022
// Use the generated ID ($id) however you want.

自定义格式 - 高级

use MuktarSayedSaleh\LaravelCustomIds\IdsGenerator;
use App\Models\User;

$generator = new IdsGenerator();
$id = $generator->next(
    model: User::class,
    format: 'RFQS-{Y}-{M}-{n}-{l}-{sequence}'
);

// $id will be RFQS-2022-Feb-2-Wednesday-000001
// Use the generated ID ($id) however you want.

带有唯一性检查

use MuktarSayedSaleh\LaravelCustomIds\IdsGenerator;
use App\Models\User;

$generator = new IdsGenerator();
$id = $generator->next(
    model: User::class,
    format: 'RFQS-{Y}-{M}-{n}-{l}-{sequence}',
    unique_field_name: 'reference_number'
);

// $id will be RFQS-2022-Feb-2-Wednesday-000001
// Use the generated ID ($id) however you want.