Как я могу переопределить / изменить загрузку модели Laravel на лету? - PullRequest
1 голос
/ 26 июня 2019

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

Ключевой частью этого является то, что существует множество существующих объектов с идентификатором бизнес-ссылки, который должен быть сохранен как есть.

Однако после этого всем новым предметам нужен новый идентификатор, который, конечно, должен быть уникальным.

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

Если я переопределю функцию загрузки (как показано ниже), то импорт не будет работать должным образом, а существующие идентификаторы бизнес-ссылок будут перезаписаны уникальным новым идентификатором.

Я сомневаюсь, что решение состоит в том, чтобы попытаться изменить мою модель на лету, поэтому я застрял ...

 public static function boot()
    {
        parent::boot();
        static::creating(function ($model) {
            $model->BusinessReference = uniqid('PRODUCT-');
        });
    }

ВХОДЯЩИЕ ДАННЫЕ

PRODUCT-1097
PRODUCT-1098
PRODUCT-1099

Когда я перезаписываю метод загрузки

PRODUCT-c2a7e56
PRODUCT-87afe52
PRODUCT-883eab3

Единственный вариант, который я вижу, - это сохранить настройки в таблице базы данных, а затем проверить, был ли когда-либо выполнен импорт. Если импорт никогда не выполнялся, не отменяйте загрузку. Если да, то не надо.

Но мне интересно, есть ли более элегантное решение?

Заранее спасибо

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