@codenameryuu/adonis-lucid-soft-deletes

中文文档
2.0.4发布于 2026/10/04MITES Module零依赖近 30 天下载 1897

与Lucid ORM合作删除 Adonis JS

中文使用文档
文档目录9 节
  1. 所需经费
  2. 安装
  3. 将软删除应用到模型
  4. 恢复软删除模式
  5. 永久删除模式
  6. 包括软删除模型
  7. 只获取软被删除的模型
  8. 软删除方法
  9. 许可证

@ codenameryuu/ adonis- lucid- soft- 删除

这个加通将功能添加到软删除 Lucid Models 通过 deleted_at 在阿多尼斯JS的旗帜.

所需经费

  • 阿多尼斯Js 7号
  • 22岁或以上

安装

  • 安装软件包
yarn add @codenameryuu/adonis-lucid-soft-deletes
  • 配置软件包
node ace configure @codenameryuu/adonis-lucid-soft-deletes
  • 确保在内部注册提供者 adonisrc.ts 文档.
providers: [
  // ...
  () => import('@codenameryuu/adonis-lucid-soft-deletes/provider'),
],

你应该加上 deleted_at 框中包含软删除的模型.

// migrations/1234566666_users.ts
import { BaseSchema } from '@adonisjs/lucid/schema'

export default class extends BaseSchema {
  protected tableName = 'products'

  async up() {
    this.schema.createTable(this.tableName, (table) => {
      // ...
      table.timestamp('deleted_at').nullable()
    })
  }
  // ...
}

将软删除应用到模型

import { compose } from '@adonisjs/core/helpers'
import { SoftDeletes } from '@codenameryuu/adonis-lucid-soft-deletes'

import { ProductSchema } from "#database/schema";

export default class Product extends compose(ProductSchema, SoftDeletes) {
  // ...columns and props
}

现在,当你叫 .delete() 模型上的方法 deleted_at (单位:千美元) customDeletedAtColumn 栏 将设定为当前日期和时间。 然而,模型的数据库记录会留在表中.

import type { HttpContext } from '@adonisjs/core/http'
import Product from '#models/product'

export default class ProductsController {
  /**
   * Delete product by id
   * DELETE /products/:id
   */
  async destroy({ request, response }: HttpContext) {
    const product = await Product.findOrFail(request.input('id'))
    await product.delete()

    return product // or response.noContent()
  }
}

:boom:软删除只用于模型实例. await Product.query().delete() 和以前一样 将删除数据库中的模型

:point right:在查询使用软删除的模型时,软删除的模型 将自动排除在所有查询结果之外.

要确定给定的模型实例是否被软删除, 您可以使用 .trashed 获取器 :

import type { HttpContext } from '@adonisjs/core/http'
import Product from '#models/product'

export default class ProductsController {
  /**
   * Get product by id
   * GET /products/:id
   */
  async show({ request, response }: HttpContext) {
    const product = await Product.withTrashed().where('id', request.input('id')).firstOrFail()
    if (product.trashed) {
      return response.forbidden()
    }
    return product
  }
}

恢复软删除模式

要恢复软被删除的模型,你可以调用 .restore() 模式实例上的方法. 此外,方法 .restore() 方法后存在 .withTrashed() 财务报告和审定财务报表 .onlyTrashed()

这个 restore 方法将设置模型的 deleted_at 列为 null 数字 :

import type { HttpContext } from '@adonisjs/core/http'
import Product from '#models/product'

export default class TrashProductsController {
  /**
   * Update trashed product by id
   * PUT /trash/products/:id
   */
  async update({ request }: HttpContext) {
    const product = await Product.withTrashed().where('id', request.input('id')).firstOrFail()
    await product.restore()

    return product

    // or

    await Product.withTrashed().where('id', request.input('id')).restore()
    await Product.query().withTrashed().where('id', request.input('id')).restore()
  }
}

永久删除模式

有时你可能需要从数据库中真正删除一个模型. 你可以用这个 .forceDelete() 从数据库表格中永久删除软删除模型的方法 :

import type { HttpContext } from '@adonisjs/core/http'
import Product from '#models/product'

export default class ProductsController {
  /**
   * Delete product by id
   * DELETE /products/:id
   */
  async destroy({ request, response }: HttpContext) {
    const product = await Product.findOrFail(request.input('id'))
    await product.forceDelete()

    return response.noContent()
  }
}

包括软删除模型

如上所述,软被删除的模型将自动被排除在查询结果之外. 然而,您可能会强制软被删除的模型包含在查询结果中 通过呼叫 .withTrashed() 模型上的方法 :

import type { HttpContext } from '@adonisjs/core/http'
import Product from '#models/product'

export default class ProductsController {
  /**
   * Get a list products
   * GET /products?withTrashed=1
   */
  async index({ request }: HttpContext) {
    return Product.query()
      .if(request.input('withTrashed'), (query) => {
        query.withTrashed()
      })
      .paginate(request.input('page', 1), request.input('perPage', 10))
  }
}

只获取软被删除的模型

这个 .onlyTrashed() 方法将检索 仅限 软被删除的模型 :

import type { HttpContext } from '@adonisjs/core/http'
import Product from '#models/product'

export default class TrashProductsController {
  /**
   * Get a list trashed products
   * GET /trash/products
   */
  async index({ request }: HttpContext) {
    return Product.onlyTrashed().paginate(request.input('page', 1), request.input('perPage', 10))
  }
}

软删除方法

方法 .withTrashed() , (中文(简体) ), .onlyTrashed() 财务报告和审定财务报表 .restore() 也可用 在ModelQueryBuilder中,用于软删除的模型,例如:

await Product.query().withTrashed().paginate(request.input('page', 1), request.input('perPage', 10))
await Product.query().onlyTrashed().paginate(request.input('page', 1), request.input('perPage', 10))

许可证

此软件包是开源软件,根据 麻省理工学院许可证。 。 。 .

版本与发布记录

@codenameryuu/adonis-lucid-soft-deletes 共发布 14 个版本,首次发布于 2026/03/25;过去 12 个月发布了 14 个版本。

版本发布日期距今
2.0.4latest2026/10/041 个月前
2.0.32026/06/294 个月前
2.0.22026/06/294 个月前
2.0.12026/06/284 个月前
2.0.02026/03/317 个月前
1.9.02026/03/317 个月前

关于 @codenameryuu/adonis-lucid-soft-deletes 的常见问题

@codenameryuu/adonis-lucid-soft-deletes 是什么?

与Lucid ORM合作删除 Adonis JS

如何安装 @codenameryuu/adonis-lucid-soft-deletes?

在项目目录运行 npm install @codenameryuu/adonis-lucid-soft-deletes,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@adonisjs/core(^7.0.0)、@adonisjs/lucid(^22.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@codenameryuu/adonis-lucid-soft-deletes 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/codenameryuu__adonis-lucid-soft-deletes 是否存在。

@codenameryuu/adonis-lucid-soft-deletes 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@codenameryuu/adonis-lucid-soft-deletes 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@codenameryuu/adonis-lucid-soft-deletes 可以商用吗?

@codenameryuu/adonis-lucid-soft-deletes 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@codenameryuu/adonis-lucid-soft-deletes 的下载量有多少?

根据 npm 官方下载统计,@codenameryuu/adonis-lucid-soft-deletes 在 2026/10/10 – 2026/11/08 这 30 天内被下载 1,897 次,日均约 63 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@codenameryuu/adonis-lucid-soft-deletes 还在维护吗?

最新版本 2.0.4 发布于 2026/10/04(1 个月前);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/03/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。