关于Ar操作时Afterdelete的疑惑

AR操作时通过先通过findByPk之后再delete可以调用afterDelete方法,而直接使用deleteAll无法调用afterDelete方法,这是怎么回事啊!难道一定要通过主键删除数据时才能调用afterDelete方法吗?

是的.

afterDelete是在delete中被调用, 而deleteAll并没有调用delete,所以不会调用afterDelete.

delete是一个真正ar实例的方法; deleteAll虽然也是一个ar的方法,但是这个ar的属性并未被populate, 实际上可看成是静态函数, 无法调用delete, 也就没有调用afterdelte了,这样做可能是出于效率的原因.