每当我修改一个关系(多对多)时,我想要做另一个操作。据我所知,这不能用事件监听器来完成(见https://github.com/laravel/framework/issues/2303)。这有效,Laravel:呼叫同步或附加功能
function setUserGroups($ids){
$this->groups->sync($ids);
doSomethingElse();
}
缺点是,其他开发人员不记得使用此函数是不直观的。一般来说,我可以附加行为以使用增变器来更改其他属性,将它们定义为守护或添加事件,并且我只是想能够执行与同步/附加类似的操作。
我没有看到创建一个存储库作为解决方案。我们没有在我们的应用程序中使用存储库模式,老实说,我也看到了这个问题。
3年半没有解决方案。迄今为止我发现的最好的方法是使用“更新”雄辩的方法,但它在数据库更新之前就被调用,对计算字段很有用,但可能不是每个人的解决方案。 – George
我最终将自己的支点转换成了自己的模型 –