跳到内容
Sutando
Esc
↑↓导航↵打开⌘J预览
本页内容

钩子

通过 creating、created、updating、saved、deleting、restored 等事件,可以挂接到模型生命周期的各个节点,执行自定义逻辑。

Sutando 模型触发几个事件,允许你挂接到模型生命周期的如下节点: creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored, trashed, forceDeleting, forceDeleted.

以 -ing 结尾的事件名称在模型的任何更改被持久化之前被调度,而以 -ed 结尾的事件在对模型的更改被持久化之后被调度。

可用的钩子

钩子 介绍
creating, created 第一次保存新模型时
updating, updated 当修改现有模型并调用 save 方法时
saving, saved 当创建或更新模型时 - 即使模型的属性没有改变
deleting, deleted 删除模型时,包括软删除
restoring, restored 恢复模型时
trashed 软删除后
forceDeleteing, forceDeleted 物理删除后

声明钩子

目前有两种方式添加钩子:

class User extends Model {}

User.creating(user => {
  //
});
class User {
  static booted() {
    this.creating(user => {
      //
    });

    this.created(user => {
      //
    });
  }
}

钩子与事务

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();

这个页面有帮助吗?