我在Eloquent模型上有这个简单的代码,可以在模型creating
事件期间触发,以自动为模型创建一个子弹。
use Illuminate\Support\Str;
...
protected static function booted()
{
static::creating(function (self $model) {
if (!$model->slug) {
$model->slug = Str::slug($model->title);
}
});
}
当它在我们的暂存站点上启动时并没有触发,我实际上不知道为什么。它在本地工作正常。尝试创建新模型时,我只会得到General error: 1364 Field 'slug' doesn't have a default value...
。
当我将其更改为此时,它将按预期工作:
use Illuminate\Support\Str;
...
protected static function boot()
{
parent::boot();
static::creating(function (self $model) {
if (!$model->slug) {
$model->slug = Str::slug($model->title);
}
});
}
但是,这是Laravel 7.x的安装,因此肯定可以使用booted
方法吗?
有人知道booted
工作时boot
不能触发的原因吗?