我在 has_many 关系上有一个观察者,如下所示:
Post has_many Comments
并激活Comments
了以下功能:Observer
class Observer_Comments
{
public function before_delete($model)
{
Log::info("Deleted a comment");
}
public function before_update($model)
{
Log::info("Updated a comment");
}
}
当我像这样更新我的Post
模型时:
$post = Post::find(1)->related('comments);
unset($post->comments[1]);
$post->save();
我的日志没有显示任何活动。被Comment
删除,并且Post
被正确更新,包括运行它的任何的任何观察者。
当我明确删除评论时:
$comment = Comment::find(1);
$comment->delete();
然后日志显示了我的期望:
INFO --> Deleted a Comment
有cascade
我必须使用的设置吗?
更新
我在里面看到了这段代码Model::save()
:
1127 if (method_exists($rel, 'delete_related'))
1128 {
1129 $rel->delete_related($this);
1130 }
是否delete_related
需要将方法添加到我的Post
或Comments
模型中?