Генерация форматированных идентификаторов

Уникальный идентификатор является важной частью нашего приложения. Кому-то нравится генерировать идентификатор приложения как автоматический инкрементальный, а кому-то нравится генерировать свой уникальный идентификатор в пользовательском формате. В этом посте я покажу вам, как сгенерировать пользовательский первичный ключ или любое поле вашей таблицы с пользовательским идентификатором с помощью пакета Laravel ID generator package .

Во-первых, установите пакет в вашем приложении Laravel.

composer require haruncpi/laravel-id-generator

Для того, чтобы воспользоваться, необходимо импортировать генератор

use Haruncpi\LaravelIdGenerator\IdGenerator;

Как пользоваться?

Вы должны передать ассоциативный массив в generateфункцию с table, length,prefix ключом.

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

Пример 02: INV-000001 для строки с префиксом.

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

Пример 03: YYMM000001

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

Пример 04: по умолчанию этот пакет работает с полем ID. Вы можете установить другое поле для создания идентификатора. Убедитесь, что выбранное вами поле должно быть уникальным, а также правильным типом данных.

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

Пример 05: по умолчанию этот пакет не сбрасывает Ваш идентификатор при изменении префикса идентификатора. Если вы хотите сбросить свой идентификатор с 1 при каждом изменении префикса, то пройдите reset_on_prefix_change => true

Сброс идентификатора ежегодно

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

Сброс идентификатора ежемесячно

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

Или любое изменение префикса

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

Через Eloquent model

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

Рейтинг
( 1 оценка, среднее 5 из 5 )
Maxyc Webber/ автор статьи
Мне 35 лет. Опыт профессиональной разработки 15 лет. Занимаюсь разработкой и поддержкой корпоративных систем автоматизации бизнеса, а также высоконагруженными проектами. Мне нравится решать нестандартные проблемы бизнеса. Имею опыт формирования команд под проект, налаживания процесса разработки, коммуникации программистов и заказчиков. Есть опыт работы с зарубежными заказчиками (ОАЭ, Польша, Германия, Швейцария).
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.