如何即时覆盖/更改laravel模型的靴子?

时间:2019-06-26 02:55:47

标签: php model laravel-5.8

我正在尝试以一种方式构造我的应用程序,该方法在实施时首先要从另一个系统导入(复制)一整堆现有数据。

其中的关键部分是,有很多现有对象必须保留其业务参考标识符。

但是,此后,所有新项目都需要一个新标识符,该标识符当然必须是唯一的。

因此,如果不覆盖模型中的启动功能,则可以很好地进行导入,但是此后我冒着没有唯一业务参考标识符的风险。

如果我确实覆盖了启动功能(如下所示),则导入将无法正常进行,并且现有的业务参考标识符将被唯一的新标识符覆盖。

我怀疑解决方案是尝试即时更改模型,所以我被困住了...

 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

我看到的唯一选项是将设置保存到数据库表中,然后检查是否曾经完成导入。如果从未完成导入,则不要覆盖引导。如果有,那就不要。

但是我想知道是否有更优雅的解决方案?

预先感谢

0 个答案:

没有答案