假设我们的Class
和Student
模型之间定义了多对多关系。
我想要执行一些操作,如果$students
附加到$class
,则会更改。例如:
$class->attach($newSetOfStudents); // notify a teacher about the change behind the scenes
$class->save(); // by overriden save() or attach() methods
如何实现这一目标?我在覆盖..->isDirty()
方法时尝试使用save()
,但它似乎不适用于附加模型。
更新
检查..->isDirty()
的支点似乎无效:
// ..
foreach($class->students as $student){
if($student->pivot->isDirty()) return true;
}
// ..
答案 0 :(得分:1)
最好的办法是通过扩展Ardent
来使用beforeSave()方法,在那里你可以处理你想要的情况,进行更改,让它自己转到save方法。
看看这个不错的package
答案 1 :(得分:1)
您可以在created
上使用模型事件 - Pivot
,如下所示:
use Illuminate\Database\Eloquent\Relations\Pivot;
Pivot::created(function($pivot) {
// Do something here
});
这个解决方案针对每个枢轴和仅适用于attach()
。
详细了解这一点 - here
希望这有帮助!