问题标签 [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.
cakephp - SoftDelete 行为 CakePHP - 删除问题
我正在使用 CakeDC 的 utils 包中的 Soft Delete - Behavior。
(https://github.com/CakeDC/utils)
现在的问题是:我想检查控制器是否有软(已删除),如下所示:
不幸的是,我得到的结果是错误的。意味着如果用户被(软)删除,我将收到“用户尚未被删除”消息,反之亦然。
我知道 Cake 如何处理这个请求,并且 beforeDelete 钩子必须返回 false,才能停止(硬)删除数据。但是在 github 上提到这个问题,现在应该已经修复了。我是唯一一个这不起作用的吗?
除了简单地否定条件之外,还有其他解决此问题的方法吗?(不想那样做,这是不对的)
提前问候和感谢!
纳赫里
mongoid - mongoid 包含软删除的文档
Mongoid 支持软删除
假设我已经从其中一个集合中软删除了一个文档。
现在我需要一个包含该集合中软删除文档的查询。
我怎样才能做到这一点?
我需要为此制定一个单独的方法吗?
谢谢
doctrine-orm - 侦听器“SoftDeleteableListener”未添加到 EventManager
我按照这个例子来测试softdeletable
我运行 Symfony 2.1.0-DEV 的项目的扩展。
我配置了我的 config.yml,如下所示:
我的控制器动作:
当我运行代码时,它总是显示异常:Listener "SoftDeleteableListener" was not added to the EventManager!
经过一段时间的调试,我发现该类SoftDeleteableFilter
具有功能getListener()
:
然而$listeners
属性没有SoftDeleteableListener
项目,但它有其他侦听器,例如
- Gedmo\Tree\TreeListener
- Gedmo\Sortable\SortableListener
- Gedmo\Sluggable\SluggableListener
- Gedmo\Loggable\LoggableListener
- Gedmo\Timestampable\TimestampableListener
- Gedmo\Translatable\TranslatableListener
它们是从 loadClassMetadata 生成的。我认为它可能从我的学说扩展.yml 服务侦听器生成:
所以我尝试添加以下内容:
但它仍然显示Listener "SoftDeleteableListener" was not added to the EventManager!
我需要在哪个 SoftDeleteableListener 实例中添加监听器?
java - 使用休眠过滤非原始类型
在我的数据库中,我不删除对象。而是完成了软删除。表示将 delted 标志设置为 true。这应该由休眠使用@Filter 注释过滤。这可行,但我遇到的问题是字段没有被过滤。
例如,我有一个子类和一个包含子类的父类。如果子对象被删除并且父对象被加载,则父对象包含子对象(尽管已正确设置已删除标志)。但我希望像处理集合一样过滤子对象。有没有办法做到这一点?
我试着把这个领域当作收藏品,但这对我不起作用。
c# - 软删除休眠
我想对我的数据库表进行软删除...我已经应用了以下语句(如此处所述http://nhibernate.info/blog/2008/09/06/soft-deletes.html和很多问题关于 SO)。Fattura 是我要应用逻辑删除的表(没有触发器)
Fattura.hbm.xml
Fattura.cs - 模型对象
删除事件监听器
以这种方式配置
事件触发但它没有设置 Cancelato =1。这是我的删除命令
grails - 使用 Hibernate Filters Plugin 软删除 Grails 中的实体
我正在寻找一种方法来避免从数据库中删除我的用户,而是将它们标记为已删除并且不要将它们带回查询中。
我找到了这个插件http://grails.org/plugin/hibernate-filter,它是完成任务的好工具。
但是当我尝试实施我的解决方案时,我遇到了同样的问题,这些问题的解决方案在互联网上没有(或者我无法找到)。
所以,接下来,我描述一下我解决软删除问题的方法。
linq - ExpressionVisitor 软删除
我们在使用实体框架实现软删除功能时遇到了一些问题。这个想法是使用一个知道 EF 上下文的存储库。在存储库级别上,我们实现了一个插件系统,只要对存储库执行操作,就会执行这些插件。例如,当我们调用Repository.GetQuery<Relation>()
插件时,就会执行。其中一个插件是 a LogicalDeletePlugin
,这个插件应该Where(x => x.IsDeleted)
向 select 中的每个表添加一个语句。IsDeleted
想法是使用ExpressionVisitor
访问 linq 表达式并找到所有“表”选择语句并添加IsDeleted
条件来实现此插件。
为了澄清问题/问题,我将使用一些代码示例来解释这个问题。
上面的 c# 代码将产生以下 SQL 代码:
正如您在生成的 SQL 查询中看到的那样,IsDeleted
语句被添加到TestWorks = x.Bonus.Where(y => !y.IsDeleted)
“选择”代码中。这TestVisitor
就是目前正在做的事情。但现在的问题是我们如何在其他选择上也实现这一点,而x => !x.IsDeleted
不是在Test = x.Bonus
部分上添加。
ExpressionVisitor 是完成此任务的正确方法还是我应该使用其他解决方案?感谢所有帮助!如果解释不够清楚,请告诉我,我会尝试提供一些额外的信息!
编辑:
以上是我添加到 ExpressionVisitor 中的内容。现在,当我取消注释返回 Expression.MamkeMemberaccess 代码时,会引发异常,因为它不需要 MemberExpression 或其他东西。
以下是我想出的解决方案:
QueryConditional 是一个持有类型为 Expression 的类Expression<Func<T, bool>>
。
InjectconditionVisitor 可以与 InterceptWith(QueryInterceptor NuGet 包)结合使用,例如query.InterceptWith(new InjectConditionVisitor(new QueryConditional(x => x.Deleted == true))
.
sql - 父子关系中级联软删除的方法
我有一个使用软删除的简单模式(这就是它的设计方式并且无法更改)。有两个表参与架构:Company (id, is_deleted)
其中当然是表的Employee (id, company_id, is_deleted)
FK 。规则是:company_id
Company
- 如果一个
Company
有is_deleted = true
,那么所有Employee
提到的那个公司都应该有is_deleted = true
。 - 但是即使父母有,
Employee
也可能有。is_deleted = true
Company
is_deleted = false
我的两个问题是 a) 如何执行这些约束?b)当a被软删除时,如何最简单地确保is_deleted = true
级联。Company
我添加了标签 postgresql 和 sql server 因为这些是我最感兴趣的数据库。如果其他 rdbms:es 中还有其他解决方案,我也想听听它们。
ruby-on-rails-3 - 通过Rails 3中的多态关系获取偏执删除对象
我有一个 Audit 类,用于通过属性存储操作。
:by 和 :on 的多态关联用于存储应审计的任何类型的对象。主要是因为多态在模式中被分解为类型和 id,因此应该能够存储我所有的模型对象。
我遇到的问题来自所有被审计的对象也都在使用 paranoia gem。paranoia gem 在每个模型表中引入了一个 deleted_at 列,该列通过其 default_scope 来检查该模型上的每个查询,default_scope 设置为“where(deleted_at is null)”。paranoia gem 还提供了一个 .with_deleted 方法,它允许通过打开 default_scope 进行直接查询,结果还返回已被偏执/软删除的对象。
但是,如果我有任何已删除的项目,我会尝试使用列出的所有已审核项目。
我不知道如何告诉 Rails 为每个添加 .with_deleted 调用的多态 :by 和 :on 对象运行查找查询。我的猜测是,rails 通过以下方式查找多态关系的对象
在我的情况下,这会给我应用了偏执狂宝石的 default_scope 的对象。
我试图在 Audit 中覆盖 self.find_by_sql 但没有运气。我陷入了一些 Arel 方法中,我需要进一步阅读这些方法才能继续前进。
我看到了以下解决方案,但我不知道该怎么做。
- 覆盖多态查找。如何?
- 在评估之前将原始 SQL 作为字符串获取,并 sub/gsub Where deleted_at is null 部分。
任何和所有关于如何解决这个问题的建议都将不胜感激。
symfony - 可软删除行为并真正删除实体
我正在使用DoctrineExtensions和StofDoctrineExtensionsBundle来获得可软删除的行为。
它在我的应用程序的前端工作得非常好。
在后端,我需要“硬”删除实体的选项。
我在我的管理控制器中禁用了过滤器(我使用 SonataAdmin):
这有效(软删除的实体出现在列表中),但是当我尝试删除它时,实体确实再次被软删除。如何强制“硬”删除?