Easy way to generate custom ID from database table in Laravel framework
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-generator
Copiar
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
id
campo 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
generate
la función con table, length
y prefix
clave.
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: 160001
Copiar
Ejemplo 02: INV-000001 para cadena de prefijo. Su campo debe ser varchar.
$id = IdGenerator::generate(['table' => 'invoices', 'length' => 10, 'prefix' =>'INV-']);
//output: INV-000001
Copiar
Ejemplo 03: AAMM000001
$id = IdGenerator::generate(['table' => 'invoices', 'length' => 10, 'prefix' =>date('ym')]);
//output: 1910000001
Copiar
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: P00001
Copiar
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,2100000003
Copiar
Restablecer ID mensualmente
$id = IdGenerator::generate(['table' => 'invoices', 'length' => 10, 'prefix' =>date('ym')]);
//output: 1912000001,1912000002,1912000003
//output: 2001000001,2001000002,2001000003
Copiar
O cualquier cambio de prefijo
$id = IdGenerator::generate(['table' => 'products', 'length' => 6, 'prefix' => $prefix]);
//output: A00001,A00002,B00001,B00002
Copiar