相关疑难解决方法(0)

Laravel观察员的数据透视表

我有一个有更新方法的观察者:

ObserverServiceProvider.php

public function boot()
{
    Relation::observe(RelationObserver::class);
}
Run Code Online (Sandbox Code Playgroud)

RelationObserver.php

public function updated(Relation $relation)
{
    $this->cache->tags(Relation::class)->flush();
}
Run Code Online (Sandbox Code Playgroud)

所以当我更新控制器中的关系时:

public function update(Request $request, Relation $relation)
{
     $relation->update($request->all()));
     return back();
}
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.但现在我有了一个数据透视表.一个关系 belongsToMany的产品.

所以现在我的控制器方法如下所示:

public function update(Request $request, Relation $relation)
{
    if(empty($request->products)) {
        $relation->products()->detach();
    } else {
        $relation->products()->sync(collect($request->products)->pluck('id'));
    }

    $relation->update($request->all());

    return back();
}
Run Code Online (Sandbox Code Playgroud)

问题是如果我添加或删除产品,则不再触发观察者.

如何在pivot table更新时触发观察者?

谢谢

php pivot observers laravel

2
推荐指数
2
解决办法
2451
查看次数

标签 统计

laravel ×1

observers ×1

php ×1

pivot ×1