美文网首页
Laravel软删除

Laravel软删除

作者: Feng_Yikai | 来源:发表于2018-07-27 15:12 被阅读0次

1.首先要做一些设置
首先在模型类中要使用SoftDeletestrait,该trait为软删除提供一系列相关方法,具体可参考源码Illuminate\Database\Eloquent\SoftDeletes,此外还要设置$date属性数组,将deleted_at置于其中:

namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Database\Eloquent\SoftDeletes; 

class 模型名 extends Model { 
        use SoftDeletes;
    //...其他一些设置 
    protected $dates = ['delete_at']; 
        public $timestamps = false;
}

2.用laravel向相应的数据库添加deleted_at字段

php artisan make:migration alter_表名_deleted_at --table=表名

3.此时在database/migrations文件夹下会生成一个相应文件,更改如下

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class Alter表名DeletedAt extends Migration { 
     public function up() { 
        Schema::table('表名', function (Blueprint $table) { 
        $table->softDeletes(); 
        }); 
     } 
     ...//其它方法 
 }

再次运行命令php artisan migrate ,发现数据库相应的数据表中已经有delete_at字段了

4.软删代码
我们在控制器中编写测试代码

$post = 模型::find(6);
$post->delete();
if($post->trashed()){
    echo '软删除成功!';
    dd($post);
}else{
    echo '软删除失败!';
}

那如果想要在查询结果中包含软删除的记录呢?可以使用SoftDeletes trait上的withTrashed方法:

$m = 模型::withTrashed()->get();
dd($m);

有时候我们只想要查看被软删除的模型,这也有招,通过SoftDeletes上onlyTrashed方法即可:

$m = 模型::onlyTrashed()->get();
dd($m);

有时候我们需要恢复被软删除的模型,可以使用SoftDeletes提供的restore方法:
恢复单个模型

$m = 模型::find(6);
$m->restore();

恢复多个模型

模型::withTrashed()->where('id','>',1)->restore();

恢复所有模型

模型::withTrashed()->restore();

恢复关联查询模型

$m = 模型::find(6);
$m->history()->restore();

如果模型配置了软删除但我们确实要删除该模型对应数据库表记录,则可以使用SoftDeletes提供的forceDelete方法:

$m = 模型::find(6);
$m->forceDelete();

相关文章

  • Laravel软删除

    1.首先要做一些设置首先在模型类中要使用SoftDeletestrait,该trait为软删除提供一系列相关方法,...

  • laravel中使用软删除

    在模型层中(Models)添加三行代码搞定 use Illuminate\Database\Eloquent\So...

  • Laravel 数据删除以及软删除

    所谓软删除指的是数据表记录并未真的从数据库删除,而是将表记录的标识状态标记为软删除,这样在查询的时候就可以加以过滤...

  • Laravel6.X软删除教程

    软删除的意思就是没有真正删除,只是在数据库里标记了一下,便于随时恢复。我们可以软删除用户,让他失去正常的权限,也可...

  • PHP 实现SoftDelete 软删除

    我们在用Laravel开发项目时常会用到软删除的功能,此篇文章将用Yii来实现相同的功能。实现方式是基于Yii特性...

  • Laravel设置软删除及其恢复系列操作

    软删除及其相关实现 在模型类中要使用SoftDeletestrait并设置$date属性数组 数据迁移中软删除字段...

  • 软删除

    软删除即不真正删除数据库中的数据,数据是可以恢复的,只是对用户来讲是不可见的。软删除在实际应用中很广泛,除了一般的...

  • Laravel 中的面试题(三)

    20、如何生成软链接? Laravel用php artisan storage:dink生成软链接。这样可以让不显...

  • laravel 遇到的坑(2)

    laravel.log 如何删除laravel.log 文件是手动清空不掉的,比如打开文件,全选 delete 是...

  • linux创建软链接

    Ubuntu创建软连接 建立软连接 删除软连接 创建软连接

网友评论

      本文标题:Laravel软删除

      本文链接:https://www.haomeiwen.com/subject/dicgmftx.html