标签: soft-delete

CakePHP 1.3替代SoftDeletable行为?

有没有人知道与Cake 1.3.x兼容的SoftDeletable Behavior的替代方法?

如果没有任何现成的行为,有关我如何在最新的Cake中执行此操作的任何建议?


弄清楚快速入侵.首先,如果您的表引入了一个名为deletedtinyint(1)无符号字段,默认为0.

app/app_model.php中,添加以下函数:

function softDelete( $id ) {
    if( $id && $this->hasField( 'deleted' ) ) {
        $this->id = $id;
        return $this->saveField( 'deleted', 1 );
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

然后从你的控制器的方法(执行删除)调用,

$this->Model->softDelete( $id );
Run Code Online (Sandbox Code Playgroud)

Catch是,无论你在哪里执行find(),都需要指定删除的条件!= 1.

仍然试图找出如何以与SoftDeletable行为相同的方式实现它.

recycle-bin cakephp behavior soft-delete

4
推荐指数
1
解决办法
1712
查看次数

Hibernate:用继承覆盖sql-delete

我有一个实体A,B extends A并尝试使用联接继承策略进行软删除.

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@SQLDelete("UPDATE A SET deleted = 1 WHERE id = ?")
A {

    @Id long id;
    boolean deleted;
}

@Entity
B extends A {}
Run Code Online (Sandbox Code Playgroud)

似乎Hibernate正确地将表设置Adeleted = 1,但也删除了表中的整个条目B.当然,我想保留这个条目.

有什么想法吗?

我正在使用Hibernate 3.5.5和基于注释的实体定义.尝试了Hibernate 3.6.2.

java hibernate soft-delete

4
推荐指数
1
解决办法
4563
查看次数

Symfony2 SoftDeleteable无法使用QueryBuilder删除

通过实体管理器,软删除行为在执行删除语句中正常工作,如下代码:

$entity = $this->em->getRepository('Users')->find(7);
$this->em->remove($entity);
$this->em->flush();
Run Code Online (Sandbox Code Playgroud)

但是当通过QueryBuilder执行相同的功能时,硬删除将在数据库上执行

$qb = $this->em->createQueryBuilder();
$qb->delete('Users', 'p');
$qb->where($qb->expr()->eq('p.id', ':id'));
$qb->setParameters(array("id" => 7));
$result = $qb->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)

如何通过实体管理器或查询构建器在所有情况下允许软删除

php soft-delete symfony doctrine-orm

4
推荐指数
1
解决办法
1977
查看次数

如何确定模型是否在Laravel 4.2中使用软删除

如何确定模型是否在Laravel 4.2中使用软删除?

Laravel API中我找到了函数isSoftDeleting(),但显然它已经从Laravel 4.2中删除,因为它使用了SoftDeletingTrait.

我如何确定模型现在是否使用软删除?

model soft-delete laravel eloquent

4
推荐指数
1
解决办法
2261
查看次数

Django 中具有唯一约束的软删除

我有这种布局的模型:

class SafeDeleteModel(models.Model):
    .....
    deleted = models.DateTimeField(editable=False, null=True)
    ......

class MyModel(SafeDeleteModel):
    safedelete_policy = SOFT_DELETE

    field1 = models.CharField(max_length=200)
    field2 = models.CharField(max_length=200)
    field3 = models.ForeignKey(MyModel3)
    field4 = models.ForeignKey(MyModel4)
    field5 = models.ForeignKey(MyModel5)

    class Meta:
        unique_together = [['field2', 'field3', 'field4', 'deleted'],]
Run Code Online (Sandbox Code Playgroud)

这里的场景是我从不希望用户删除数据。相反,删除只会隐藏记录。但是,我仍然希望所有非软删除的记录都遵守唯一键约束。基本上,我希望有尽可能多的重复删除记录,但只能存在一个唯一的未删除记录。所以我想包括“已删除”字段(由 django-safedelete 库提供),但问题变成了 Django 的唯一检查失败,“psycopg2.IntegrityError:重复键值违反唯一约束”对于 ['field2', 'field3' , 'field4', 'deleted'] 因为 NULL 不“等于” NULL 并且它在 PostgreSQL 中产生 false。

有没有办法用我的 Django 模型布局来强制执行 unique_together 约束?或者是否有更好的想法物理删除记录,然后将其移动到存档数据库,如果用户想要恢复记录,那么软件将在存档中查找记录并重新创建它?

database django postgresql django-models soft-delete

4
推荐指数
1
解决办法
1448
查看次数

使用Hibernate Filters Plugin软件删除Grails中的实体

我一直在寻找一种方法来避免从数据库中删除我的用户,而是将它们标记为已删除,并且不会将它们带回查询中.

我找到了这个插件http://grails.org/plugin/hibernate-filter,这是一个很棒的工具.

但是当我试图实施我的解决方案时,我通过了相同的问题,其解决方案在互联网上没有(或者我无法找到).

接下来,我描述了解决软删除问题的方法.

grails grails-orm soft-delete hibernate-filters

3
推荐指数
1
解决办法
2077
查看次数

mongoose 使用对象 ID 软删除

所以我尝试使用 mongoose-delete 插件软删除 mongoDB 中的数据,但请求只获得了 mongoose 对象的对象 ID。所以为了“软删除”数据,我必须先做一个findOne,然后对它使用删除功能。是否有任何插件或功能可以让我仅使用对象 ID 软删除这些数据?而不是对数据库使用两次命中。数据很关键,因此只需要软删除选项,而不是硬删除。而且我不能使用通用的更新功能,需要一些插件或节点模块来为我做这件事。

soft-delete mongoose node.js

3
推荐指数
2
解决办法
8381
查看次数

laravel软删除相关问题

我有一些关于 Laravel 软删除的问题。我已经搜索了它的作用和含义,关于软删除最容易理解的部分来自这句话

“当模型被软删除时,它们实际上并没有从您的数据库中删除。相反,在模型上设置了一个 Deleted_at 属性并将其插入到数据库中。如果模型具有非空的 deleted_at 值,则该模型已被软删除。要为模型启用软删除,请在模型上使用 Illuminate\Database\Eloquent\SoftDeletes 特征并将 deleted_at 列添加到您的 $dates 属性:"

所以这是我根据那句话提出的问题:

问题 1:

那么,当我在代码中使用软删除时,当我尝试删除一些数据时,视图页面(blade.php)中的数据是否消失而数据库仍然包含这些数据?

问题 2:

我看到有些人使用称为 static::deleting 的东西,我不太明白这是如何工作的?你能解释一下它的作用吗?谢谢

问题 3:

如何使用软删除删除数据?我看到人们只是将一些东西放入他们的模型中而不是使用按钮,那么这是否意味着您只能在模型中手动删除它,而不仅仅是单击视图页面中的删除按钮?

soft-delete laravel

3
推荐指数
1
解决办法
8677
查看次数

在删除softDelete之后,Laravel仍希望找到deleted_at列

我刚刚使用此迁移从表中删除了softDelete:

   Schema::table("items", function ($table) {
      $table->dropSoftDeletes();
   });
Run Code Online (Sandbox Code Playgroud)

但现在每个查询都会产生:

Column not found: 1054 Unknown column 'items.deleted_at' in 'where clause' 
Run Code Online (Sandbox Code Playgroud)

代码没有明确引用此列.是否已在某处缓存,如果是,如何清除它?

php soft-delete laravel laravel-5

3
推荐指数
1
解决办法
3483
查看次数

禁用导航属性的 softDelete 查询过滤器

我使用 Ef Core 2.1,在其中启用了软删除查询过滤器。

在某些情况下,我想从实体中检索软删除导航属性,但无法检索数据(导航属性为 null,因为它被软删除)。

我使用这个文档(写于 2017 年)作为参考,并指出

过滤器不能包含对导航属性的引用。

我想知道是否有任何方法可以启用这种行为。

public class Form {

    public int Id { get; set; }

    public virtual Sprint Sprint {get; set;}
}

public class Sprint: ISoftDeleteable {

    public int Id { get; set; }

    public string Name {get; set;}
}

// Indicates that every model that implements this interface should use soft delete.
public interface ISoftDeleteable
{ 

}

 // Both statements have returned null.
 Sprint sprint = applicationDbContext.Forms.FirstOrDefault(f => f.Id == …
Run Code Online (Sandbox Code Playgroud)

c# soft-delete entity-framework-core .net-core

3
推荐指数
1
解决办法
2815
查看次数