
16466
Trong bài viết này, chúng ta sẽ tìm hiểu về một tính năng rất hữu ích trong Laravel - Soft Deletes
Trong Laravel, "Soft Deletes" là một tính năng giúp bạn có thể xóa bản ghi mà không thực sự xóa nó khỏi cơ sở dữ liệu. Thay vào đó, bản ghi sẽ được đánh dấu là đã bị xóa bằng cách thiết lập một trường deleted_at
với thời gian xóa. Bản ghi vẫn tồn tại trong cơ sở dữ liệu nhưng sẽ không được hiển thị trong các truy vấn mặc định.
Cách sử dụng Soft Deletes trong Laravel
-
Thêm Soft Deletes vào Model: Đầu tiên, bạn cần thêm
SoftDeletes
trait vào model của mình.use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Post extends Model { use SoftDeletes; // Các thuộc tính khác của model protected $dates = ['deleted_at']; }
- Thêm cột
deleted_at
vào bảng: Bạn cần phải thêm một cộtdeleted_at
vào bảng tương ứng với model của bạn để lưu trữ thời gian xóa. Bạn có thể làm điều này bằng cách tạo một migration:php artisan make:migration add_deleted_at_to_posts_table --table=posts
Trong file migration:
Schema::table('posts', function (Blueprint $table) { $table->softDeletes(); // Thêm cột deleted_at });
Sau đó, chạy lệnh migrate:
php artisan migrate
-
Sử dụng Soft Deletes trong truy vấn:
-
Để xóa mềm một bản ghi, sử dụng phương thức
delete()
:$post = Post::find(1); $post->delete();
- Để khôi phục một bản ghi đã xóa mềm, sử dụng phương thức
restore()
:
$post = Post::withTrashed()->find(1); $post->restore();
- Để xóa cứng (xóa vĩnh viễn) một bản ghi đã xóa mềm, sử dụng phương thức
forceDelete()
:
$post->forceDelete();
- Để lấy tất cả các bản ghi, bao gồm cả những bản ghi đã bị xóa mềm, sử dụng phương thức
withTrashed()
:
$posts = Post::withTrashed()->get();
- Để chỉ lấy các bản ghi đã bị xóa mềm, sử dụng phương thức
onlyTrashed()
:
$trashedPosts = Post::onlyTrashed()->get();
-
Lợi ích của Soft Deletes
- Khôi phục dữ liệu: Cho phép bạn khôi phục lại các bản ghi đã bị xóa.
- An toàn: Tránh xóa nhầm dữ liệu, đặc biệt là khi cần duyệt lại hoặc kiểm toán dữ liệu đã bị xóa.
Danh mục
Bài viết liên quan

Quản Lý Thời Gian Tự Động Trong Eloquent
01.08.2024
Author: | ADMIN |
---|
Khám phá cách quản lý timestamps trong Eloquent Laravel: tắt tự động cập nhật, tùy chỉnh định dạng, đổi tên cột và cập nhật dữ liệu mà không ảnh hưởng updated_at.

Các Mối Quan Hệ Trong Eloquent
01.08.2024
Author: | ADMIN |
---|
Tìm hiểu cách thiết lập và sử dụng các mối quan hệ trong Eloquent Laravel, giúp quản lý dữ liệu dễ dàng và linh hoạt hơn.

Basic Eloquent Model and MVC
01.08.2024
Author: | ADMIN |
---|
Tìm hiểu cách Laravel triển khai kiến trúc MVC với Model, View, Controller. Hướng dẫn chi tiết về Eloquent, xử lý logic trong Controller và hiển thị dữ liệu với Blade.

Eager Loading
01.08.2024
Author: | ADMIN |
---|
Eager Loading trong Eloquent giúp tối ưu hiệu suất bằng cách giảm số lượng truy vấn không cần thiết. Tìm hiểu cách sử dụng with, withCount và nested eager loading cho các mối quan hệ phức tạp!
Bài viết khác

Blade Basics
01.08.2024
Author: | ADMIN |
---|
Khám phá Blade trong Laravel: từ if-else, loops, kế thừa layout đến include sub-views. Giúp code gọn gàng, dễ quản lý và bảo trì hơn!

9 Mẹo Hữu Ích Khi Sử Dụng Blade Trong Laravel
01.08.2024
Author: | ADMIN |
---|
Khám phá 9 mẹo Blade giúp bạn viết code Laravel sạch, tối ưu và chuyên nghiệp hơn. Từ @forelse, @auth, @guest, đến format ngày, tối ưu SEO – tất cả trong một bài viết súc tích, dễ áp dụng!

Hiển thị giá trị trong Blade
01.08.2024
Author: | ADMIN |
---|
Hướng dẫn hiển thị biến trong Laravel Blade: escape HTML tự động, hiển thị dữ liệu thô, giá trị mặc định và cách truy xuất mảng, đối tượng. Giúp bạn tối ưu hiển thị dữ liệu một cách an toàn!