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.