Yêu cầu thg 10 6, 2017 6:01 SA 1447 1 2
  • 1447 1 2
+6

[PHP][Laravel] Tôi có nên sử dụng SoftDelete trong Model không?

Chia sẻ
  • 1447 1 2

Bài toán: Giả sử ta có 2 bảng categories, products. Bảng categories quan hệ 1-n với bảng products.


Sử dụng SoftDelete thực hiện xóa record bảng categories thì ta phải xóa record tại products.

Cách giải quyết: Sử dụng foreach truy vấn đến các bảng có liên kết để thực hiện SoftDelete. các bạn có thể tham khảo tại đây

Vấn đề là: Nếu mà categories liên kết với products và liên kết tới rất nhiều bảng khác thì không thể control được tất cả các bảng đó.

2 CÂU TRẢ LỜI


Đã trả lời thg 10 6, 2017 6:47 SA
Đã được chấp nhận
+6

Mình nghĩ không nên sử dụng Soft Deleting nếu không thực sự cần thiết, do khi liên quan đến relationship thì sẽ có rất nhiều vấn đề (đặc biệt khi muốn restore lại một instance nào đó). Một điểm khác nữa là Soft Deleting không thực sự hiệu quả khi thực hiện trên collection các model instance (phải delete từng instance một). Còn cách quản lý thì mình nghĩ phải làm thủ công thôi sử dụng model event như restoring, restored, deleting, deleted,... (hoặc sử dụng model observer để gộp các event kia nếu cần).

Chia sẻ
thg 10 6, 2017 7:32 SA

anh có thể giải thích rõ cho em được không ạ!

Avatar Reishou @reishou
thg 10 13, 2017 2:53 SA

Dữ liệu luôn là vô giá, không nên xóa cứng với bất kỳ lý do gì, nhất là trên prod

Đã trả lời thg 10 6, 2017 6:17 SA
+2

Dùng SoftDelete dùng để xoá record những bảng có liên kết với nhau mà không bị lỗi khi xoá. Và có thể restore dữ liệu đã xoá

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí