Soft Delete in Laravel

AuthorSumit Dey Sarkar

Pubish Date22 Mar 2023

categoryLaravel

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);
$record->restore();

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

Comments 0

Leave a comment