jhamnerx/laravel-id-generator

在 Laravel 框架中轻松生成自定义 ID

dev-master 2022-11-22 21:35 UTC

This package is auto-updated.

Last update: 2024-09-23 01:29:32 UTC


README

在 Laravel 框架中从数据库表生成自定义 ID 的简单方法

Image description

文档

唯一标识符是应用程序的重要组成部分。有人喜欢生成增量自动的应用程序标识符,有人喜欢以自定义格式生成其唯一标识符。本文章将向您展示如何通过Laravel ID 生成器包生成自定义主键或任何表字段的自定义 ID。

 

安装

composer require haruncpi/laravel-id-generatorCopiar

 

如何使用?

您可以在控制器的代码中使用它作为助手或在其模型中定义启动方法。

控制器示例

导入 ID 生成器

use Haruncpi\LaravelIdGenerator\IdGenerator;Copiar
public function store(Request $request){

	$id = IdGenerator::generate(['table' => 'todos', 'length' => 6, 'prefix' => date('y')]);

	$todo = new Todo();
	$todo->id = $id;
	$todo->title = $request->get('title');
	$todo->save();

}Copiar

注意:如果您为表中的 id 字段生成标识符,则必须在模型中配置 id 字段为可重置的,并设置 public $incrementing = false;

 

模型示例

在您的模型中添加一个 boot 方法。当添加新记录时,将自动生成标识。

public static function boot()
{
    parent::boot();
    self::creating(function ($model) {
        $model->uuid = IdGenerator::generate(['table' => $this->table, 'length' => 6, 'prefix' =>date('y')]);
    });
}Copiar

 

参数

您需要将一个关联数组传递给 generate 函数,包括 table, lengthprefix 键。

table= 您的表名。

field= 可选。默认情况下,它作用在 id 字段上。您也可以设置其他字段名。

length= 您的标识符长度

prefix= 定义您的前缀。可以是年、月或任何自定义字母。

reset_on_prefix_change= 可选,默认为 false。如果您希望在更改前缀时重置标识符为 1,请将其设置为 true。

 

示例:01

$config = [
    'table' => 'todos',
    'length' => 6,
    'prefix' => date('y')
];

// now use it
$id = IdGenerator::generate($config);

// use within single line code
$id = IdGenerator::generate(['table' => 'todos', 'length' => 6, 'prefix' => date('y')]);

// output: 160001Copiar

 

示例 02: INV-000001(对于前缀字符串)。您的字段必须是 varchar。

$id = IdGenerator::generate(['table' => 'invoices', 'length' => 10, 'prefix' =>'INV-']);
//output: INV-000001Copiar

 

示例 03: AAMM000001

$id = IdGenerator::generate(['table' => 'invoices', 'length' => 10, 'prefix' =>date('ym')]);
//output: 1910000001Copiar

 

示例 04: 默认情况下,此包在 ID 字段上运行。您可以设置其他字段来生成 ID。请确保您选择的字段是唯一的,并且数据类型也是正确的。

$id = IdGenerator::generate(['table' => 'products','field'=>'pid', 'length' => 6, 'prefix' =>date('P')]);
//output: P00001Copiar

 

示例 05: 默认情况下,此包在更改 ID 前缀时不会重置您的 ID。如果您希望在每次更改前缀时重置 ID 为 1,请传递 reset_on_prefix_change => true

每年重置 ID

$id = IdGenerator::generate(['table' => 'invoices', 'length' => 10, 'prefix' =>date('y')]);
//output: 2000000001,2000000002,2000000003
//output: 2100000001,2100000002,2100000003Copiar

每月重置 ID

$id = IdGenerator::generate(['table' => 'invoices', 'length' => 10, 'prefix' =>date('ym')]);
//output: 1912000001,1912000002,1912000003
//output: 2001000001,2001000002,2001000003Copiar

或更改前缀的任何其他操作

$id = IdGenerator::generate(['table' => 'products', 'length' => 6, 'prefix' => $prefix]);
//output: A00001,A00002,B00001,B00002Copiar