ItSolutionStuff.com

How to use Soft Delete in Laravel?

By Hardik Savani • September 5, 2024
Laravel

In this tutorial, i would like to show you how to use soft delete in laravel. here i will give you example of laravel soft delete. you can use eloquent soft delete in laravel 6, laravel 7, laravel 8, laravel 9, laravel 10 and laravel 11 project.

i will explain you step by step implementation of soft delete in laravel application. we have to use soft delete for safety and backup in laravel.

How work soft delete, laravel add deleted_at column on the table that be default will be null and when we remove then it will place current timestamp, Laravel Model always fetch that record have only deleted_at = null.

So, how to use in our project, so first when you create table moigration then you have to add softDeletes(). you can see like bellow example of migration.

Migration Example:

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Database\Migrations\Migration;


class CreateItemsTable extends Migration

{

/**

* Run the migrations.

*

* @return void

*/

public function up()

{

Schema::create('items', function(Blueprint $table) {

$table->increments('id');

$table->string('title');

$table->text('description');

$table->softDeletes();

$table->timestamps();

});

}


/**

* Reverse the migrations.

*

* @return void

*/

public function down()

{

Schema::drop("items");

}

}

Ok, now you can find deleted_at column in your items table and you have also model should look like as bellow:

Items Model

namespace App;


use Illuminate\Database\Eloquent\Model;

use Illuminate\Database\Eloquent\SoftDeletes;


class Item extends Model

{

use SoftDeletes;


public $fillable = ['title','description'];


/**

* The attributes that should be mutated to dates.

*

* @var array

*/

protected $dates = ['deleted_at'];


}

Now, you can use Item model as normally like you use before, you get all record like this way.

$data = Item::get();

It will return all record that have deleted_at = null only and you can also remove record like this way:

$data = Item::find(1)->delete();

You can also get deleted records with soft delete.

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

Output:

You can check and use it's really good....

Hardik Savani

Hardik Savani

I'm a full-stack developer, entrepreneur, and founder of ItSolutionStuff.com. Passionate about PHP, Laravel, JavaScript, and helping developers grow.

📺 Subscribe on YouTube

We Are Recommending You

How to Add Custom Attribute in Laravel Model?

Read Now →

Laravel Model Disable Primary Key & Auto Increment Example

Read Now →

Get Array of Ids from Eloquent Models in Laravel

Read Now →

How to Set Default Value in Laravel Model?

Read Now →

Laravel Eloquent WhereNotIn Query Example

Read Now →

Laravel Eloquent WhereIn Query Example

Read Now →

How to Create and Use Query Scope in Laravel Eloquent

Read Now →

How to use Union Query with Laravel Eloquent?

Read Now →

Laravel Select with Sum Query Example

Read Now →

Laravel Query Builder Where Exists Example

Read Now →

Example of unionAll in Query Builder Laravel

Read Now →

How to Get Query Log in Laravel Eloquent?

Read Now →

Laravel CKeditor 5 Image Upload Tutorial Example

Read Now →