Keep Data Without Deleting It: Using Laravel Soft Delete

Laravel Soft Delete lets "delete" records without actually removing them from the database. This can be useful when you want to keep data for future recovery.


Step 1: Enable Soft Deletes in Your Model

Add SoftDeletes to your model. Let's take an example with a Post model.

use Illuminate\Database\Eloquent\Model;
// include this line
use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model
{
    use SoftDeletes;
}

Step 2: Add the Deleted At Column to Your Table

Run a migration to add a deleted_at column(if already not exist). This column keeps track of when a record is "deleted."

php artisan make:migration add_deleted_at_to_posts_table --table=posts

Replace --table=posts with name of your table

In the migration file:

public function up()
{
    Schema::table('posts', function (Blueprint $table) {
        $table->softDeletes();
    });
}

Step 3: Use Soft Delete in Your Application

Now, you can "soft delete" a record:

$post = Post::find(1);
$post->delete(); // Soft delete

Tip: To restore it:

$post->restore(); // Restore the "deleted" post

To get only soft-deleted records:

$trashedPosts = Post::onlyTrashed()->get();

Laravel Soft Delete is an easy way to keep records without permanently deleting them, adding flexibility to your app's data management.

You Might Also Like

Files with Temporary URLs in Laravel Storage

# Example 1: Generate a Temporary URL for a File **1. Store a File:** First, ensure you have a file...

Modify Response with Middleware

Modify or enhance responses using middleware, such as adding headers, manipulating content, or handl...