标签: soft-delete

软删除和恢复(MySQL,PHP)

我需要能够删除邮件并恢复它们,直到页面没有重新加载.所以我的'messages'表中有一个字段'is_deleted'.我想要的是删除它后面的这些"删除"记录.什么是最好的解决方案?

php mysql sql soft-delete

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

软删除用户表?或者还有另一种选择吗?

我的头脑正在阅读所有关于软删除的专业文章和文章.但这是我知道实现这一目标的唯一方法:

维护外键和用户信息(历史数据)即使用户被删除/不活动,注释,附件和故事表中也有外键.因此,仍然可以确定是谁写了这篇评论等.

其他信息:

停用的用户无法登录,也不会包含在列表中.

但是如果我使用软删除,那么每次查询该表时,在sql语句的WHERE中添加额外的列并不是很好.

该怎么办?希望你们能提供一些意见.

注意:我使用mysql和ROR

mysql ruby-on-rails soft-delete

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

Laravel强制删除关系事件

我正在使用Laravel 5.2开发一个Laravel Web应用程序.我的问题很简单......我如何听取forceDelete事件以强制删除模型关系?

我一直在寻找网络和SO以及一些我发现的所有问题/答案都归结为删除方法,而且在API文档中我还没有找到很多...

在我的例子中,我有一个注册表模型和一个RegistryDetail模型

注册表

|id|name|surname|....
Run Code Online (Sandbox Code Playgroud)

RegistryDetail表

|id|id_registry|....
Run Code Online (Sandbox Code Playgroud)

我已经为这个boot功能创建了:

protected static function boot()
{
    parent::boot();

    static::deleted(function($registry) {
        // Delete registry_detail
        $registry->registryDetail->delete();
    });

    static::restored(function($registry) {
        // Restore registry_detail
        $registry->registrydetail()->withTrashed()->restore();
    });
}
Run Code Online (Sandbox Code Playgroud)

由于两个模型都只在调用delete()方法时才调用SoftDeletesstatic::deleted函数.如果我调用forceDelete()方法,则不会从数据库中删除相关模型.

如果您需要更多信息,请告诉我.

提前致谢

php soft-delete laravel laravel-5.2

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

软删除的存储过程

此代码用于执行软删除.它首先删除记录.如果删除成功,则回滚然后更新同一记录的标志列.如果该记录具有依赖性并且无法删除,则不执行任何操作.为了知道,行动发生了,我保留了Status变量.但是,无论如何,它总是会产生无效的结果.我哪里错了.

ALTER PROCEDURE SoftDelete
(
  @TableName nvarchar(50), @ColName nvarchar(50),
  @Id nvarchar(50)
)
AS
BEGIN
  DECLARE @qryDel nvarchar(MAX),@qryUpd nvarchar(MAX),@Status int = null,
          @Param  nvarchar(MAX)

  SET @Param = N'@TableName nvarchar(50), @ColName nvarchar(50),
                @Id nvarchar(50)'
  SET @qryDel = N'delete from @tablename where @colname=@id'
  SET @qryUpd = N'update @tablename set deleted = 1 where @colname=@id'

  BEGIN TRY
    BEGIN TRANSACTION
      EXECUTE sp_executesql @qryDel, @Param, @TableName, @ColName, @Id
    ROLLBACK TRANSACTION
    BEGIN TRANSACTION
      EXECUTE sp_executesql @qryUpd, @Param, @TableName, @ColName, @Id
    COMMIT TRANSACTION
    SET @Status = 1
  END …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server stored-procedures soft-delete

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

在模型中使用引导方法时,SoftDeletes不过滤

我有一个Model在Laravel中使用软删除的,并且还使用了一个包含boot函数的特征:

class Design extends Model {
    uses Softdeletes, Versionable;
    // ...
}

trait Versionable {
    public static function boot(){
    // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

SoftDeletes本身仍然可以正常工作:delete_at列已正确填充。但是,Designs::get()不能正确过滤软删除的模型:

return Designs::get();

[{"id":1,"project_id":1,"name":"","description":null,"created_at":"2015-12-04 21:06:40","updated_at":"2015-12-04 21:06:40","deleted_at":null},
 {"id":2,"project_id":1,"name":"A Design","description":"a different description", "created_at":"2015-12-04 21:06:57","updated_at":"2015-12-04 21:07:09","deleted_at":"2015-12-04 21:07:09"}]
Run Code Online (Sandbox Code Playgroud)

从Versionable中删除Versionable特征或boot方法可以解决此问题。

为什么会发生这种情况,我该如何解决?

php soft-delete laravel

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

Laravel 5.2软删除不起作用

我有一个简单的应用程序与表格和模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use SoftDeletes;
class Post extends Model
{
   protected $table = 'post';

   protected $dates = ['deleted_at'];

   protected $softDelete = true;

}
Run Code Online (Sandbox Code Playgroud)

我试图做软删除的例子,我正在使用路由,例如route.php:

<?php
use App\Post;

use Illuminate\Database\Eloquent\SoftDeletes;
Route::get('/delete', function(){
    $post = new Post();
    Post::find(12)->delete();

});
Run Code Online (Sandbox Code Playgroud)

我有一个使用迁移创建的列"created_at":

    Schema::table('post', function (Blueprint $table) {
        $table->softDeletes();
    });
Run Code Online (Sandbox Code Playgroud)

,但是当我运行网站时,它删除了具有所选ID的行,而不是向此列添加时间.我哪里错了?

soft-delete laravel eloquent laravel-5

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

为 AbpUserRole 禁用 SoftDelete

默认情况下,AbpUserRoleAbpRole实现ISoftDelete. 是否可以禁用它?

我试图这样做:

[AbpAuthorize(AppPermissions.Pages_Administration_Roles_Delete)]
public async Task DeleteRole(EntityDto input)
{
    using (CurrentUnitOfWork.DisableFilter(AbpDataFilters.SoftDelete))
    {
        var role = await _roleManager.GetRoleByIdAsync(input.Id);
        var users = await UserManager.GetUsersInRoleAsync(role.Name);

        foreach (var user in users)
        {
            CheckErrors(await UserManager.RemoveFromRoleAsync(user, role.Name));
        }

        CheckErrors(await _roleManager.DeleteAsync(role));
    }
}
Run Code Online (Sandbox Code Playgroud)

尽管过滤器在当前工作单元中被禁用,但它不起作用。该实体被标记为已删除。

c# soft-delete aspnetboilerplate

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

未找到列:“where 子句”中的 1054 列“orders.deleted_at”未知

在我的表中,我没有 delete_at 列。

但在 Laravel 模型中,在 where 条件下,deleted_at 返回 null。

下面是我的代码

public function load($id) {

        return $this
            ->select(sprintf('%s.*', $this->getTable()))
            ->where(sprintf('%s.id', $this->getTable(), $this->getKeyName()), '=', $id)
            ->first();
    }
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我吗?如何解决这个问题?

soft-delete laravel eloquent laravel-5

0
推荐指数
1
解决办法
4803
查看次数