我有一个有更新方法的观察者:
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更新时触发观察者?
谢谢