我正在尝试以一种方式构造我的应用程序,该方法在实施时首先要从另一个系统导入(复制)一整堆现有数据。
其中的关键部分是,有很多现有对象必须保留其业务参考标识符。
但是,此后,所有新项目都需要一个新标识符,该标识符当然必须是唯一的。
因此,如果不覆盖模型中的启动功能,则可以很好地进行导入,但是此后我冒着没有唯一业务参考标识符的风险。
如果我确实覆盖了启动功能(如下所示),则导入将无法正常进行,并且现有的业务参考标识符将被唯一的新标识符覆盖。
我怀疑解决方案是尝试即时更改模型,所以我被困住了...
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
我看到的唯一选项是将设置保存到数据库表中,然后检查是否曾经完成导入。如果从未完成导入,则不要覆盖引导。如果有,那就不要。
但是我想知道是否有更优雅的解决方案?
预先感谢