use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; // 1. Add SoftDeletes trait to your model: class Product extends Model { use SoftDeletes; protected $dates = ['deleted_at']; // Optional: specify the column if not 'deleted_at' } // 2. Add 'deleted_at' column to your migration: Schema::table('products', function (Blueprint $table) { $table->softDeletes(); // Adds 'deleted_at' timestamp column }); // Usage: $product = Product::find(1); $product->delete(); // Soft deletes the product (sets 'deleted_at' timestamp) // Retrieve all products, including soft deleted ones $allProducts = Product::withTrashed()->get(); // Retrieve only soft deleted products $onlyDeletedProducts = Product::onlyTrashed()->get(); // Restore a soft deleted product $deletedProduct = Product::onlyTrashed()->find(1); if ($deletedProduct) { $deletedProduct->restore(); } // Permanently delete a product (bypassing soft deletes) $productToForceDelete = Product::find(2); if ($productToForceDelete) { $productToForceDelete->forceDelete(); }