【发布时间】:2019-08-18 21:59:36
【问题描述】:
Laravel 5.8 应该调度同步、附加和分离事件(https://laravel.com/docs/5.8/releases 搜索 Intermediate Table / Pivot Model Events 部分)。
更新:发布此问题后,发行说明已更新(更多信息:https://github.com/laravel/framework/issues/28050 - https://github.com/laravel/docs/pull/5096)。
我试过了,但是下面的代码抛出了异常:
调用未定义的方法 App\ProjectUser::syncing()
注意:由于 Laravel 5.8 应该调度同步事件,我不想使用外部包。
class User extends Model
{
public function projects()
{
return $this->belongsToMany(\App\Project::class)->using(\App\ProjectUser::class);
}
}
class Project extends Model
{
public function users()
{
return $this->belongsToMany(\App\User::class)->using(\App\ProjectUser::class);
}
}
class ProjectUser extends Pivot
{
public static function boot()
{
parent::boot();
static::syncing(function ($item) {
dd('syncing event has been fired!');
});
}
}
// web.php
$project = \App\Project::first();
$project->users()->sync([1,2]);
我尝试将引导方法从ProjectUser 移动到User 和Project,但我得到了同样的异常。
【问题讨论】:
-
那里只有
boot()方法。 -
@Tpojka 你能说得更具体些吗?这是告诉 laravel 监听事件的常用方法(另一种方法是创建观察者)。
-
抱歉,没有这样使用。我相当使用观察者,但没有使用通过引导方法。我只是搜索了文档,没有同步方法。
标签: php laravel laravel-5.8