It just add a field on the database that is updated when you delete a row instead of fully removing that field. The field can be termed as trashed but not fully deleted hence can be retrieved and restored.
Now, when you call the delete method on the model, the*** deleted_at*** column will be set to the current date and time. And, when querying a model that uses soft deletes, the soft deleted models will automatically be excluded from all query results.
When using soft deletes, a deleted_at column is added to the table. When you delete a record, it is not actually removed, but the deleted_at timestamp is set.
By default, when retrieving records, Laravel will only return records without a set deleted_at value.
It is possibke to force Laravel to return sodt deleted records though, when you need them.