首页 > 解决方案 > Eloquent 事件删除监听器返回 false 会停止删除功能吗?[拉拉维尔]

问题描述

我有Team口才和TeamObserverTeamObserverdeleting event,如果我打电话TeamDeletingEventTeamDeletingEvent派遣TeamDeletingListener。if TeamDeletingListerwill return false 是否会停止团队删除功能?

团队观察者

class TeamObserver
{
    /**
     * Handle the team "deleting" event.
     *
     * @param  Team  $team
     * @return void
     */
    public function deleting(Team $team)
    {
        event(new TeamDeletingEvent($team));
    }
}

团队删除事件

class TeamDeletingEvent
{
    use SerializesModels;

    /**
     * @var Team
     */
    public $team;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(Team $team)
    {
        $this->team = $team;
    }
}

TeamDeletingListener

class TeamDeletingListener
{
    /**
     * Handle the event.
     *
     * @param  TeamDeletingEvent  $event
     * @return bool
     */
    public function handle(TeamDeletingEvent $event)
    {
        $teamUser = Team::where('id', $event->team->id)->users()->first();
        if(is_null($teamUser)){
           return true;
        }
        return false;
    }
}

不止于此TeamObserver注册AppServiceProviderEvent and Listener注册于EventServiceProvider

标签: laraveleloquentlaravel-7

解决方案


listener return false 不会停止删除功能。它将停止事件的连续监听器调用。但是 Eloquent 事件返回 false 将停止删除功能。(模型实例值得到更新,但这些没有在数据库中更新)。更多信息详细回答


推荐阅读