Good day! Do you want to understand how to use Laravel soft delete? You’re in the correct place, I suppose. We’ll delve into the area of soft delete and examine Laravel’s capability in this blog post. So let’s get going!
What is Soft Delete?
With Laravel soft delete capability, you may remove records from a database table while preserving them in the database. Laravel adds a “deleted_at” column to the table and updates its value to the current timestamp in instead of permanently deleting the entry. This makes it simple to later restore or permanently erase the record.
How Does Laravel Implement Soft Delete?
The steps listed below must be completed in order to enable soft delete in your Laravel project:
How does soft deletion work? Laravel adds a deleted_at column to the table, which by default will be null, and when we remove it, it will replace it with the current timestamp. The Laravel Model always retrieves records where deleted_at = null is the only value present.
How to utilize it in our project is as follows: Add softDeletes() while creating table migration first. You can see a migration example like the one below.
Migration Example:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->enum('status', array('1','0','-1'))->default('0');
$table->string('file_pic')->nullable();
$table->string('password');
$table->tinyInteger('type')->default(0);
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
};
Okay, now you can find deleted_at column in your items table and you have also model should look like as below:
Users model:-
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model
{
use SoftDeletes;
public $fillable = ['id','name','email','etc'];
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at'];
}
You may now utilize the User model in the same manner as before to access all records.
$data = User::get();
Only records with deleted_at = null will be returned, and you can also delete records in the following ways:
$data = User::find(1)->delete();
Soft deletion allows you to recover deleted records as well.
$data = User::withTrashed()->get();
I hope this will help you …!!!!