Странная проблема с пакетом генератора идентификаторов Laravel

#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-generator

2. Спасибо, по умолчанию изменение префикса отключено. Проблема не в этом.

Ответ №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