Сделайте уникальный идентификатор, используя Laravel - PullRequest
0 голосов
/ 06 апреля 2019

Я хочу создать уникальный идентификатор в Laravel.

EX: PO-12010001

  • PO = product,
  • 12 = месяц,
  • 01 = год,
  • 0001 = ID продукта.

Я пробовал поискать в Google, и в ответе используется UUID, но я не смог понять.

Ответы [ 4 ]

2 голосов
/ 06 апреля 2019

Ваш идентификатор всегда будет состоять из 4 цифр в конце, поэтому мы можем выбрать последние четыре символа, используя substr().Когда вы увеличиваете это значение на единицу, оно теряет свои отступы.Так что 0001+1=2.Для этого мы добавим обратно str_pad() длиной четыре.

$string = 'PO-12010001';
$id = substr($string, -4, 4);

$newID = $id+1;
$newID = str_pad($newID, 4, '0', STR_PAD_LEFT);

echo "PO-1201".$newID;
0 голосов
/ 06 апреля 2019

он называется Human code, который может быть уникальным идентификатором рядом со столбцом Id в таблице db.

$idColumn = 1;
$dateCode = date('ym');
$newHumanCode = 'PO-'.$dateCode.substr('0000'.$idColumn, -4);
return $newHumanCode;

также вы можете использовать случайное число вместо $ idColumn, например:

$idColumn  = mt_rand();
0 голосов
/ 06 апреля 2019

Во-первых, я не знаю.Так что, возможно, у него есть похожая концепция.Но в любом случае, определяемые пользователем + разработанные уникальные, скорее всего, не уникальные.

Моя рекомендация - разрешить базе данных создать уникальный идентификатор с функцией автоинкремента.Обычно это единственный способ гарантировать уникальные идеи в многозадачной среде.

На втором этапе вы можете создать читабельный идентификатор и использовать его для отображения на интерфейсе suer.Такой запрос может быть что-то вроде:

update table set nice_id = concat("prefix-",main_id) 
where main_id = $last_inserted_id

... или любой другой расчет, основанный на подсчете количества одинаковых записей с начала месяца.

Существуют другие решения, основанные на попыткахчтобы создать nice_id, вставьте его в базу данных, а если это не удастся, создайте следующий .. и продолжайте до тех пор, пока не будете успешными.Но простые целые числа, созданные автоинкрементом, более производительны для запросов и ключей.

0 голосов
/ 06 апреля 2019

Сначала, как в этой ситуации, как вы хотите сделать свой идентификатор Тип изделия Месяц Год Идентификатор продукта

Получить тип продукта в вашем контроллере

, если Product = PO / Service = SE

Создайте новую дату с помощью PHP

 $date2 = date('Y-m-d'); 

и получите подстроку даты с вашим требованием, получите последний идентификатор таблицы продукта и объедините все переменные и используйте в качестве уникального идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...