简体中文
钩子
Sutando 模型触发几个事件,允许你挂接到模型生命周期的如下节点: creating
, created
, updating
, updated
, saving
, saved
, deleting
, deleted
, restoring
, restored
, trashed
和 forceDeleted
.
以 -ing
结尾的事件名称在模型的任何更改被持久化之前被调度,而以 -ed
结尾的事件在对模型的更改被持久化之后被调度。
可用的钩子
钩子 | 介绍 |
---|---|
creating , created | 第一次保存新模型时 |
updating , updated | 当修改现有模型并调用 save 方法时 |
saving , saved | 当创建或更新模型时 - 即使模型的属性没有改变 |
deleting , deleted | 删除模型时,包括软删除 |
restoring , restored | 恢复模型时 |
trashed | 软删除后 |
forceDeleted | 物理删除后 |
通过 Sutando 发出批量更新或删除查询时,不会为受影响的模型调度 saved
、updated
、deleting
和 deleted
模型事件。 这是因为在执行批量更新或删除时,模型从未真正被检索到。
声明钩子
目前有两种方式添加钩子:
js
class User extends Model {}
User.creating(user => {
//
});
js
class User {
static boot() {
this.creating(user => {
//
});
this.created(user => {
//
});
}
}
钩子与事务
js
User.deleted(async (user, { client }) => {
const query = user.related('posts');
if (client) {
query.transacting(client);
}
await query.delete();
});
const trx = await sutando.beginTransaction();
await user.delete({
client: trx
});
await trx.commit();