Laravel 8 Soft Delete Example

Share Me
  •  
  •  
  •  
  • 1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
    1
    Share
Laravel 7/6 Soft Delete Example

Today now in this tutorial, i will give you a example of how to use soft delete in laravel 8 application. So here i will tell simple a example of laravel 8 soft delete. It will use in laravel 8 soft delete migration.

We are remove row from database when we are delete any record from our site. But laravel 8 give us SoftDeletes in models that way we can’t remove from database but if will remove from record from front side. Then it doesn’t show any record on front. So here we can retrieve our record from database if we remove wrong row.

Here we will know about how work soft delete. In soft delete laravel will add a new column as named deleted_at on the table and that will be default null and when we will remove any data then it will place current timestamp. And also in laravel Model always only fetch that record what’s have deleted_at is null.

So, now we see how to use in our project, so first when we will create a table migration then we have to add softDeletes(). We can see  as like as bellow example of migration.

Here we have bellow example we can learn soft delete in laravel 8

Create Post Migration Soft Delete

For In this post migration open Post migration file and then put the below same code.

Path: /database/migrations/2020_01_02_095534_create_posts_table.php

<?php

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

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->text('body');
            $table->softDeletes();
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

Create Post Model Soft Delete

Next, then go to app/Model/Post.php and open post model file and then put the below same code.

Now we can find deleted_at column in our post table and we need to also model should look like as bellow

here following path of model fille

Path:/app/Model/Post.php

<?php
namespace App;

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

class Post extends Model
{
    use SoftDeletes;

    protected $fillable = ['title','body'];

    /**
    * The attributes that should be mutated to dates.
    *
    * @var array
    */
    protected $dates = ['deleted_at'];
}
Get All Records

Now, we can use Post model as normally like we use before, we get all record like this way.

$data = Post::get();
Delete one Record

So It will return all record that have deleted_at is null only and we can also remove record like this way:

$data = Post::find(1)->delete();
Get All Records After Delete one Record

Now, we can also use Post model as normally like we are use before, we get all record After Delete one Record like this way.

$data = Post::withTrashed()->get();

You can check the table records.

Read Also : Laravel 8 Eloquent Global Scope Tutorial Example

I hope it will help you. Also you can follow us on Facebook

About code chef

My name is Shahriar sagor. I'm a developer. I live in Bangladesh and I love to write tutorials and tips that will help to other Developer's. I am a big fan of PHP, Javascript, JQuery, Laravel, Codeigniter, VueJS, AngularJS and Bootstrap from the early stage.

View all posts by code chef →