Soft Delete in Laravel

AuthorSumit Dey Sarkar

Pubish Date22 Mar 2023


In this tutorial we will learn soft delete in laravel.


Soft delete in laravel

In Laravel, soft delete is a way to mark a record as "deleted" without actually deleting it from the database. This allows you to keep a record of deleted data and potentially recover it later if needed.


To use soft delete in Laravel, you need to add a deleted_at column to your database table. This column will be used to store the timestamp of when the record was "deleted".


To enable soft delete for a model, you need to use the Illuminate\Database\Eloquent\SoftDeletes trait. Simply add the trait to your model class,

like this:

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

class YourModel extends Model
    use SoftDeletes;

    // ...


This will enable soft delete for your model. Now, when you call the delete() method on a model instance, it will not actually delete the record from the database. Instead, it will set the deleted_at column to the current timestamp. To retrieve only the records that have not been "soft deleted", you can use the withTrashed() method:

$records = YourModel::withTrashed()->get();


This will return all records, including the ones that have been "soft deleted". To retrieve only the records that have been "soft deleted", you can use the onlyTrashed() method:

$records = YourModel::onlyTrashed()->get();


This will return only the records that have been "soft deleted". To restore a "soft deleted" record, you can use the restore() method:

$record = YourModel::onlyTrashed()->find($id);

This will restore the record and set the deleted_at column back to null.

Comments 0

Leave a comment