Asked Oct 6th, 2017 6:01 a.m. 1437 1 2
  • 1437 1 2
+6

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

Share
  • 1437 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 ANSWERS


Answered Oct 6th, 2017 6:47 a.m.
Accepted
+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).

Share
Oct 6th, 2017 7:32 a.m.

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

0
| Reply
Share
Avatar Reishou @reishou
Oct 13th, 2017 2:53 a.m.

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

0
| Reply
Share
Answered Oct 6th, 2017 6:17 a.m.
+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á

Share
Viblo
Let's register a Viblo Account to get more interesting posts.