Implementing Soft Deletes in Laravel


Introduction on Soft Deletes in Laravel:

In this blog post, we will explore the concept of soft deletes in Laravel and learn how to implement this powerful feature in your Laravel applications. Soft deletes provide an elegant solution for handling deleted records, allowing you to retain data integrity while maintaining the ability to restore or permanently delete records as needed. Whether you’re new to Laravel or looking to level up your skills, this step-by-step guide will help you understand and implement soft deletes effectively. Let’s dive in!

Section 1: Understanding Soft Deletes in Laravel

Before we begin implementation, let’s gain a clear understanding of what soft deletes entail in the Laravel framework. Soft deletes offer a convenient way to mark records as “deleted” without physically removing them from the database. Instead of permanently deleting data, soft deletes utilize a “deleted_at” timestamp column to indicate the deletion status of a record.

Section 2: Enabling Soft Deletes in Your Eloquent Models

To enable soft deletes in Laravel, follow these steps:

  1. Open the model file where you want to implement soft deletes.
  2. Import the `IlluminateDatabaseEloquentSoftDeletes` trait at the top of your model file:
  3. Include the `SoftDeletes` trait within your model class:
    class YourModel extends Model
        use SoftDeletes
        // Rest of your model code...

    Call to Action: Now that we have enabled soft deletes in our model, let’s move on to implementing soft deletion in our database schema.

Section 3: Adding “deleted_at” Column to Database Schema

  1. Open the migration file corresponding to the table associated with your model.
  2. Within the `up()` method, use the `softDeletes()` method to add a “deleted_at” column to your table schema:
public function up()


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

        // ...your other table columns   



  1. Run the migration command to apply the changes to your database:
php artisan migrate

Call to Action: Fantastic! We have now configured the soft delete functionality in both our model and database. Let’s move on to implementing soft deletes in our application code.

Section 4: Working with Soft Deletes

  1. Deleting Records:

To delete a record using soft deletes, you can simply call the `delete()` method on an instance of your model:

$record = YourModel::find($id);


2. Restoring Deleted Records:

Soft-deleted records can be restored using the `restore()` method:

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


3. Permanently Deleting Records:

To permanently remove soft-deleted records from the database, use the `forceDelete()` method:

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


Call to Action: Congratulations! You have successfully implemented soft deletes in your Laravel application. The ability to soft delete, restore, and permanently delete records provides flexibility and data integrity.

Section 5: Retrieving Records with Soft Deletes

By default, Laravel’s Eloquent ORM automatically excludes soft-deleted records from query results. However, if you want to include soft-deleted records, you can use the `withTrashed()` method:

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

Call to Action: With the knowledge of softdeletes in Laravel, you are now equipped to handle deleted records effectively, maintaining data integrity while providing the flexibility to recover or permanently remove data when necessary.


In this tutorial, we explored the implementation of soft deletes in Laravel, allowing you to manage deleted records with ease and maintain data integrity. By leveraging soft deletes, you can build more robust and user-friendly applications that offer both recovery and permanent deletion options for your data.

Remember, soft deletes are not just about deleting records; they’re about safeguarding data and providing a seamless user experience. Embrace the power of soft deletes and build applications that not only handle deletions gracefully but also prioritize data integrity at every step.

Call to Action: Start implementing soft deletes in your Laravel projects today, and unlock the power of managing deleted records gracefully. Happy coding!

Note: The code examples provided in this blog post serve as a guideline. Remember to adapt and customize the code to fit your specific application and database structure.

Leave a Reply

Your email address will not be published. Required fields are marked *