#laravel
Вопрос:
Странная проблема с генератором идентификаторов Laravel. Я хочу добавить поле пользовательского идентификатора в таблицу заказов, и у меня есть этот метод загрузки в модели:
public static function boot()
{
parent::boot();
self::creating(function ($model) {
$model->order_number = IdGenerator::generate(['table' => 'orders', 'length' => 6, 'prefix' => date('y')]);
});
}
Это работает и создает идентификаторы, подобные этому:
210001, 210002, ... ,210010
Проблема в том, что как только идентификатор достигает 210010, он перезапускается с 210001. Я открыл проблему на странице GitHub проектов, но мне интересно, есть ли обходной путь для этого.
Комментарии:
1. Читайте об
reset_on_prefix_change
этом в документах laravelarticle.com/laravel-custom-id-generator2. Спасибо, по умолчанию изменение префикса отключено. Проблема не в этом.
Ответ №1:
По умолчанию пакет работает с полем идентификатора таблицы, но вы используете пользовательское поле order_number
и не передали его для создания функции. Посмотрите на пример 4 в документе генератор идентификаторов Laravel
Попробуйте этот код
public static function boot()
{
parent::boot();
self::creating(function ($model) {
$args = ['table' => 'orders', 'field' => 'order_number', 'length' => 6, 'prefix' => date('y')];
$model->order_number = IdGenerator::generate($args);
});
}
Комментарии:
1. Здравствуйте, как я уже ответил на закрытом билете на github. Это все еще не работает. Сгенерированные идентификаторы совпадают. пожалуйста, проверьте этот комментарий: github.com/haruncpi/laravel-id-generator/issues/31