问题标签 [soft-delete]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2685 浏览

c# - Entity Framework 5 软删除

我试图防止对我的数据库表进行任何删除。目前使用 Entity Framework 5。首先这是我的代码,

我已经设法用这种方式阻止它。当我使用 EF 的 Remove 方法时,它不再工作了。但是,我想要实现的是,当我对给定 ID 使用 remove 方法时,我想设置 isDeleted(这是我所有数据库中的(位)列表)值为假。目前,我迷失在互联网上的文档和共享代码中。

谢谢

0 投票
2 回答
1622 浏览

python - 如何在 SQLAlchemy 中实现仅附加的版本化模型

我想在仅附加的数据存储中重新实现我现有的一些 SQLAlchemy 模型;仅附加意味着对象仅使用 INSERT 语句更新,而不使用 UPDATE 或 DELETE 语句。

UPDATE 和 DELETE 语句将替换为另一个增加版本的 INSERT。将有一个is_deleted标志,而不是 DELETE,is_deleted=True将创建一个新版本:

此外,

我知道如何解决大多数这些问题,但我正在努力处理 SQLAlchemy 中的事件挂钩,这些挂钩将处理某些需要在更新和删除时完成的事情。

SQLAlchemy 文档已经有一些基本的版本控制示例。版本化的示例接近我想要的,但它们不处理 (1) 删除和 (2) 外键关系。

(1) 删除。我知道有一个session.deleted字段,我会以与versioned_rows.pysession.dirty示例中的迭代方式类似的方式对其进行迭代——但我如何从待删除列表中取消标记该项目并创建一个新项目?

(2) 上面的例子只处理了一个父子关系,它的处理方式(使关系过期)似乎需要为每个模型自定义代码。(2.1) 有没有办法让它更灵活?(2.2) 是否可以将 SQLAlchemy 配置relationship()为返回给定外键的 max(version) 对象?

0 投票
3 回答
5203 浏览

laravel - 如何在 Laravel 4 中查询和过滤软删除的 Eloquent 模型

使用来自https://github.com/snipe/laravel4-starter的Laravel 4.1 入门套件,我有 2 个模型:类别和兴趣。两者也是可软删除的。我希望索引视图根据用户的意愿显示 3 个不同的列表:“显示全部”、“显示已删除”和“显示未删除”。一切都很好,直到我在它们之间添加了 HasMany/BelongsTo 关系。

楷模:

现在,当视图调用$interest->category->name属于软删除类别的兴趣时,一切都会以ErrorException: Trying to get property of non-object. 我怀疑这是因为它$interest->category是 NULL 因为它被软删除后没有被加载。

控制器:

请参阅我在 switch 语句的每 3 个部分中提出的问题。我怀疑该解决方案将涉及某种急切的加载,但即使经过一些非常激烈的谷歌搜索和实验,我仍然无法找到正确的咒语......

额外点:如何在过滤掉具有软删除类别的兴趣时加载所有非软删除的兴趣?

谢谢你。

0 投票
3 回答
10613 浏览

php - Laravel 软删除唯一列名

假设我有类别表,并且我在上面使用了软删除。现在我第一次添加了一个类别“测试”,之后我删除了这个类别,所以它会deleted_at从数据库中更新我的列。

现在,当我再次尝试添加名称为“Test”的类别时,它告诉我这个名称已被使用。我已经尝试过发布在这里的规则。

但它不起作用。我在我的模型中使用了特征。下面是我的模型代码。

0 投票
1 回答
122 浏览

laravel-4 - Doctrine 2 (Mitchell van Wijngaarden):软删除仍然显示在搜索结果中

我正在使用 Mitchell van Wijngaarden 的 Doctrine 解决方案(https://github.com/mitchellvanw/laravel-doctrine/wiki/Soft-Deleting)和 Laravel 4。

我已经设置了软删除,但仍然让软删除的实体出现在搜索结果中。例如,以下查询:

即使“deleted_at”字段已填充时间戳,此查询也会返回 GroupInstruction 类的所有实体。我的印象是所有软删除的项目都会被隐藏。有没有人有这方面的经验?

0 投票
1 回答
148 浏览

php - 软删除后保持记录顺序

我为包含以下列的表构建了一个软删除系统:

样本数据(3 行):

更新记录时,软删除也设置为有效(业务需求)。因此,如果我将类别“部门”更新为“部门数据”,我会这样做:

代码本身工作正常,但是当我在前端显示此数据时,由于按 ID 排序,它会更改记录的顺序。我能想到解决这个问题的唯一方法是有一个带有某种“Order”变量的额外列,查询必须在检索之前对其进行排序。

有没有更简单的方法来处理问题,并允许记录的顺序保持不变?

0 投票
1 回答
424 浏览

node.js - 使用 Sails 和 Waterline 检查已删除的数据

我是新手SailsJS并将其用于应用程序,并且在删除Project模型
项目模型时遇到了一些查询问题:

用户模型:

在创建项目时,Sails 会自动为 createdAt 和 updatedAt 填写数据,我正在为 Project 填写数据Name
删除项目时,我需要进行软删除,其中我将设置deletedAt值和deletedBy值。
在获取所有项目的列表时,它不应该被删除的项目。
我想到的一种方法是使用查询获取所有项目:

然后对每个项目进行如下检查:

有什么办法,而不是我手动检查已删除的项目,可以使用查询来完成吗?即省略所有已删除的项目。
提前致谢。

0 投票
1 回答
196 浏览

doctrine-orm - 多对多上的 Doctrine2 软可删除

我有一个多对多连接User -> Address并使用软可删除插件。

我需要编写一个查询来查找所有没有与其链接地址的用户。在不使用软删除的情况下,以下工作正常:

现在,如果启用了 softdeletableAddress并且我删除了用户的所有地址,它仍然会在结果中返回这个用户。发生这种情况是因为上述查询转换为以下 SQL(简化):

如您所见,它没有加入Address实体,因此对它的deletedAt列一无所知。

所以我的问题是如何重写我的 DQL 查询以使其知道 deletedAt 并过滤掉此类记录。

谢谢!

0 投票
1 回答
53 浏览

ruby-on-rails - 如何防止删除“默认”实体?

我目前正在使用 Rails 4.2 的最新 beta 版本构建原型应用程序。

对于系统的几个部分,我需要允许用户在列表中选择一个“默认”项目。

到目前为止,我已经将其作为模型上的“默认”字段实现,并通过唯一性验证来确保只允许一个“默认”。

我的业务规则之一是防止删除“默认”实体。

我可以使用 before_destroy 回调来执行此操作 - 效果很好 - 但我也使用来自https://github.com/radar/paranoia的 paranoia gem来为我提供软删除功能。这会通过更新调用覆盖模型的破坏(改为设置“deleted_at”字段)。使用 before_update 调用并没有给我预期的结果,因为 deleted_at 字段设置得不够早。

如果偏执狂宝石会给我带来麻烦,我很乐意完全删除该要求。软删除是一个很好的功能,而不是现阶段的基本功能。

有没有人对我如何实现这个逻辑有任何建议,同样重要的是测试它是否按预期工作?

0 投票
0 回答
472 浏览

laravel-4 - Laravel 4.2 软删除无法正常工作

我刚刚开始使用干净的 laravel 4.2 安装(从 5 天前开始)的项目。我有一个这样定义的模型:

该表是用 创建的$table->softDeletes();,并且有一个可以为空的 deleted_at 列。

现在,当我删除一条记录时Code::find(1)->delete();,deleted_at 列填充了当前日期。

但是当我这样做时Code::all(),或者Code::find(1),结果包括软删除的记录,但我希望它不包括它们,除非我特别想要删除的结果......

我已经阅读了http://laravel.com/docs/4.2/upgrade#upgrade-4.2并且我的模型反映了那里写的内容。

我是否遗漏了什么,或者这是 4.2 中的错误?