在同一事件中使用多个 Boot trait将只触发第一个trait,而忽略其余的可引导trait。
class Tag extends Model
{
use HasKey; // this will work (but if i put it bellow it will not work)
use HasSlug; // this's not (but if i put it above it will work)
}
trait HasKey
{
public static function bootHasKey()
{
static::creating(
fn (Model $model) => $model->key = 'value'
);
}
trait HasSlug
{
public static function bootHasSlug()
{
static::creating(
fn (Model $model) => $model->slug = 'value'
);
}
}
2条答案
按热度按时间voase2hg1#
我发现目前还不支持它,也许在Laravel的未来版本中!
https://github.com/laravel/framework/issues/40645#issuecomment-1022969116
agyaoht72#
尝试使用闭包而不是箭头函数,如下所示:
因为箭头函数总是返回一个值,所以laravel会在执行第一个事件处理程序后停止事件传播。
你可以在这里看到源代码