# @codenameryuu/adonis-lucid-soft-deletes 中文文档

规范地址：https://npmcn.com/package/%40codenameryuu/adonis-lucid-soft-deletes/

版本：2\.0\.4
npm 元数据更新时间：2026-10-04T15:13:17.944Z
中文译文更新时间：2026-11-10T09:17:15.947Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40codenameryuu/adonis-lucid-soft-deletes
原文对照：https://npmcn.com/package/%40codenameryuu/adonis-lucid-soft-deletes/?lang=original
项目主页：https://github.com/codenameryuu/adonis-lucid-soft-deletes#readme
源码仓库：https://github.com/codenameryuu/adonis-lucid-soft-deletes

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：37 kB，15 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=24\.0\.0
- 运行依赖：0 个
- peer 依赖：@adonisjs/core ^7\.0\.0，@adonisjs/lucid ^22\.0\.0
- 首次发布：2026-03-25T02:39:28.974Z
- 最新版本发布：2026-10-04T15:13:17.797Z
- 近 30 天下载量：1897（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：14（近 12 个月 14 个）

## 中文简介

与Lucid ORM合作删除 Adonis JS

## 安装

```sh
npm install @codenameryuu/adonis-lucid-soft-deletes
```

也可以使用：`pnpm add @codenameryuu/adonis-lucid-soft-deletes`、`yarn add @codenameryuu/adonis-lucid-soft-deletes`、`bun add @codenameryuu/adonis-lucid-soft-deletes`

## README

# @ codenameryuu/ adonis- lucid- soft- 删除

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

## 所需经费

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

## 安装

-   安装软件包

```bash
yarn add @codenameryuu/adonis-lucid-soft-deletes
```

-   配置软件包

```bash
node ace configure @codenameryuu/adonis-lucid-soft-deletes
```

-   确保在内部注册提供者 `adonisrc.ts` 文档.

```typescript
providers: [
  // ...
  () => import('@codenameryuu/adonis-lucid-soft-deletes/provider'),
],
```

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

```typescript
// 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()
    })
  }
  // ...
}
```

### 将软删除应用到模型

```typescript
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` 栏 将设定为当前日期和时间。 然而,模型的数据库记录会留在表中.

```typescript
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` 获取器 :

```typescript
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` 数字 :

```ts
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()` 从数据库表格中永久删除软删除模型的方法 :

```typescript
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()` 模型上的方法 :

```typescript
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()` 方法将检索 **仅限** 软被删除的模型 :

```typescript
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中,用于软删除的模型,例如:

```typescript
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))
```

## 许可证

此软件包是开源软件,根据 [麻省理工学院许可证](https://npmcn.com/package/%40codenameryuu/adonis-lucid-soft-deletes/LICENSE.md)。 。 。 .

## 常见问题

### @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 和提交记录判断。

