标签: soft-delete

软删除是个好主意吗?

软删除是个好主意还是坏主意?

您只需将其标记为IsDeleted = true,而不是实际删除数据库中的记录,并且在恢复记录后,您可以将其标记为False.

这是一个好主意吗?

最好是物理删除记录,然后将其移动到存档数据库,如果用户想要记录回来,那么软件会在存档中查找记录并重新创建它吗?

sql database database-design data-modeling soft-delete

136
推荐指数
9
解决办法
8万
查看次数

物理与逻辑/软删除数据库记录?

执行逻辑/软删除记录(即设置一个表明记录被删除的标志)而不是实际或物理删除记录的优点是什么?

这是常见做法吗?

这样安全吗?

sql database soft-delete

105
推荐指数
9
解决办法
7万
查看次数

如何在Eloquent中检查行是否被软删除?

在Laravel 5.1中有一种很好的方法来检查一个雄辩的模型对象是否被软删除了吗?我不是在谈论选择数据,而是一旦我拥有了对象,例如Thing::withTrashed()->find($id)

到目前为止,我能看到的唯一方法是

if ($thing->deleted_at !== null) { ... }
Run Code Online (Sandbox Code Playgroud)

我没有在API中看到任何允许的相关方法

if ($thing->isDeleted()) { ... }
Run Code Online (Sandbox Code Playgroud)

php soft-delete laravel eloquent laravel-5.1

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

为什么软删除的实体出现在查询结果中?

我正在尝试实现软删除概念.

这是我的对象:

class Post extends Eloquent {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'posts';
    protected $softDelete = true;

    ...
Run Code Online (Sandbox Code Playgroud)

软删除已开启.

现在,如果我'删除'帖子,它会获得'deleted_at'时间戳:

描述

问题是,当我搜索或仅用于all()显示帖子时,会在那里显示软删除的项目.怎么了?

soft-delete laravel eloquent laravel-4

30
推荐指数
4
解决办法
4万
查看次数

在将所有导航属性加载(懒惰或渴望)到内存之前对其进行过滤

对于未来的访问者:对于EF6,您可能最好使用过滤器,例如通过此项目:https://github.com/jbogard/EntityFramework.Filters

在我们正在构建的应用程序中,我们应用"软删除"模式,其中每个类都有一个'已删除'布尔.实际上,每个类都只是继承自这个基类:

public abstract class Entity
{
    public virtual int Id { get; set; }

    public virtual bool Deleted { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

举一个简短的例子,假设我有类GymMemberWorkout:

public class GymMember: Entity
{
    public string Name { get; set; }

    public virtual ICollection<Workout> Workouts { get; set; }
}

public class Workout: Entity
{
    public virtual DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我从数据库中获取健身房成员列表时,我可以确保没有获取任何"已删除"健身房成员,如下所示:

var gymMembers = context.GymMembers.Where(g => !g.Deleted);
Run Code Online (Sandbox Code Playgroud)

然而,当我遍历这些健身房成员时,他们Workouts从数据库加载而不考虑他们的Deleted旗帜.虽然我不能责怪实体框架没有理解这一点,但我想以某种方式配置或拦截延迟属性加载,以便永远不会加载已删除的导航属性.

我一直在考虑我的选择,但它们看起来很稀缺: …

c# soft-delete ef-code-first entity-framework-5

26
推荐指数
1
解决办法
5915
查看次数

软删除最佳实践(PHP/MySQL)

问题

在处理产品和订单的Web应用程序中,我希望维护前员工(用户)与他们处理的订单之间的信息和关系.我想维护过时的产品和包含这些产品的订单之间的信息和关系.

但是,我希望员工能够解除管理界面的混乱,例如删除以前的员工,过时的产品,过时的产品组等.

我正在考虑实现软删除.那么,人们通常如何做到这一点?

我的直接想法

我的第一个想法是flag_softdeleted在应该是软删除的每个对象表中粘贴一个" TINYINT NOT NULL DEFAULT 0"列.或者可以使用时间戳代替?

然后,我在每个相关的GUI中提供"显示已删除"或"取消删除"按钮.单击此按钮,您将在结果中包含软删除的记录.每个删除的记录都有一个"恢复"按钮.这有意义吗?

你的意见?

此外,我很感激任何相关资源的链接.

php mysql database-design soft-delete

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

Laravel Soft删除恢复()错误

以下软删除代码对我来说很好:

$post = Post::find($post_id);
$post->delete();
Run Code Online (Sandbox Code Playgroud)

deleted_at字段已更新.但这给了我一个错误:

$post = Post::find($post_id);
$post->restore();
Run Code Online (Sandbox Code Playgroud)

这是错误:

exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to a member function restore() on a non-object'
Run Code Online (Sandbox Code Playgroud)

我很难过.到目前为止谷歌没有帮助.

soft-delete laravel eloquent

25
推荐指数
2
解决办法
2万
查看次数

级联软删除

SQL总是有一个很棒的功能:级联删除.你事先计划好,什么时候删除东西,BAM!无需担心所有这些依赖记录.

但是,现在实际上删除任何东西几乎都是禁忌.您将其标记为已删除并停止显示.不幸的是,当存在依赖记录时,我无法找到可靠的解决方案.我总是手动编写复杂的软删除网络.

那里有一个我完全错过的更好的解决方案吗?

sql soft-delete

18
推荐指数
3
解决办法
4626
查看次数

如何在Laravel中软删除父记录时软删除相关记录?

我有这个发票表,它具有以下结构

id | name | amount | deleted_at
2    iMac   1500   | NULL
Run Code Online (Sandbox Code Playgroud)

以及具有以下结构的付款表

id | invoice_id | amount | deleted_at
2    2            1000   | NULL
Run Code Online (Sandbox Code Playgroud)

发票模型

class Invoice extends Model {

    use SoftDeletes;

}
Run Code Online (Sandbox Code Playgroud)

这是删除发票的代码

public function cance(Request $request,$id)
{
    $record = Invoice::findOrFail($id);
    $record->delete();
    return response()->json([
        'success' => 'OK',
    ]);
}
Run Code Online (Sandbox Code Playgroud)

付款模式

class Payment extends Model {

    use SoftDeletes;

}
Run Code Online (Sandbox Code Playgroud)

Invoice表上的softDelete工作正常,但其相关记录(付款)仍然存在.如何使用softDelete删除它们?

php soft-delete laravel eloquent laravel-5

14
推荐指数
3
解决办法
9628
查看次数

监听器"SoftDeleteableListener"未添加到EventManager中

我按照这个例子来测试softdeletable运行Symfony 2.1.0-DEV的项目的扩展.

我配置我的config.yml如下:

orm:
    auto_generate_proxy_classes: %kernel.debug%
    auto_mapping: true
    filters:
          softdeleteable:
            class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
            enabled: true
    mappings:
        translatable:
            type: annotation
            alias: Gedmo
            prefix: Gedmo\Translatable\Entity
            # make sure vendor library location is correct
            dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
        loggable:
            type: annotation
            alias: Gedmo
            prefix: Gedmo\Loggable\Entity
            dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/Entity"
        tree:
            type: annotation
            alias: Gedmo
            prefix: Gedmo\Tree\Entity
            dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"   
Run Code Online (Sandbox Code Playgroud)

我的控制器动作:

/**
 * @Route("/del", name="del_article")
 */
public function delAction() {
    $em = $this->getDoctrine()->getEntityManager();

    $article = $em->find('Article', 3);
    $em->remove($article);
            $em->flush();
    die('ok');
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,它总是显示异常: Listener "SoftDeleteableListener" was not …

soft-delete doctrine-orm symfony-2.1

13
推荐指数
2
解决办法
1万
查看次数