[PHP][Laravel] Tôi có nên sử dụng SoftDelete trong Model không?
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
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).
anh có thể giải thích rõ cho em được không ạ!
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
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á