jhamnerx/laravel-id-generator

Easy way to generate custom ID in laravel framework

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

This package is auto-updated.

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


README

Easy way to generate custom ID from database table in Laravel framework

Image description

Documentation

La identificación única es una parte importante de nuestra aplicación. A alguien le gusta generar la identificación de la aplicación como incremental automática y a alguien le gusta generar su identificación única en un formato personalizado. Esta publicación le mostrará cómo generar una clave primaria personalizada o cualquier campo de su tabla con una ID personalizada a través del paquete generador de ID de Laravel .

 

Instalación

composer require haruncpi/laravel-id-generatorCopiar

 

¿Cómo usarlo?

Puede usarlo en el código de su controlador como ayudante o dentro de su modelo definiendo un método de arranque.

Ejemplo con controlador

Generador de ID de importación

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

NÓTESE BIEN:Si genera una identificación para el campo de la tabla id, debe configurar el idcampo como rellenable y public $incrementing = false;dentro de su modelo.

 

Ejemplo con el modelo

En su modelo agregue un boot método. La identificación se generará automáticamente cuando se agregue un nuevo registro.

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

 

Parámetros

Debe pasar una matriz asociativa a generatela función con table, lengthy prefixclave.

table= Su nombre de tabla.

field= Opcional. Por defecto, funciona en el campo id. También puede establecer otros nombres de campo.

length= La longitud de su identificación

prefix= Defina su prefijo. Puede ser un prefijo de año, mes o cualquier letra personalizada.

reset_on_prefix_change= Opcional, predeterminado falso. Si desea restablecer la identificación de 1 en el cambio de prefijo, configúrelo como verdadero.

 

Ejemplo: 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

 

Ejemplo 02: INV-000001 para cadena de prefijo. Su campo debe ser varchar.

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

 

Ejemplo 03: AAMM000001

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

 

Ejemplo 04: Por defecto, este paquete funciona en el campo ID. Puede establecer otro campo para generar una ID. Asegúrese de que su campo seleccionado debe ser único y también el tipo de datos adecuado.

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

 

Ejemplo 05: De forma predeterminada, este paquete no restablecerá su ID cuando cambie su prefijo de ID. Si desea restablecer su ID de 1 en cada cambio de prefijo, pasereset_on_prefix_change => true

Restablecer ID anualmente

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

Restablecer ID mensualmente

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

O cualquier cambio de prefijo

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