Những gì tôi đã làm trong trường hợp của tôi là tạo một bảng mới trên cơ sở dữ liệu, bạn có thể gọi nó là Domains
ví dụ.
Thêm tất cả các tính năng cụ thể, những tính năng có thể được hiển thị trên một số tên miền nhưng không có trong phần còn lại, dưới dạng cột cho bảng đó dưới dạng bit cho các giá trị boolean. Giống như, trong trường hợp của tôi , allow_multiple_bookings
.use_company_card
... bất cứ điều gì.
Sau đó, hãy xem xét việc tạo một lớp Domain
và kho lưu trữ tương ứng của nó và chỉ cần hỏi các giá trị này trên mã của bạn, cố gắng đẩy logic đó càng nhiều càng tốt vào miền của bạn (mô hình, dịch vụ ứng dụng, v.v.).
Chẳng hạn, tôi sẽ không kiểm tra phương thức điều khiển RequestBooking
nếu tên miền đang yêu cầu đặt chỗ chỉ có thể yêu cầu một hoặc nhiều.
Thay vào đó, tôi làm điều RequestBookingValidatorService
đó để có thể kiểm tra xem thời gian đặt phòng đã qua chưa, người dùng có thẻ tín dụng được kích hoạt hay không, hoặc Tên miền mà hành động này xuất phát được phép yêu cầu nhiều hơn một lần đặt phòng (và sau đó nếu nó đã có bất kì).
Điều này thêm sự tiện lợi của khả năng đọc, vì bạn đã đẩy quyết định này đến các dịch vụ ứng dụng của mình. Ngoài ra, tôi thấy rằng bất cứ khi nào tôi cần một tính năng mới, tôi có thể sử dụng di chuyển Laravel (hoặc Symfony) để thêm tính năng đó trên bảng và tôi thậm chí có thể cập nhật các hàng của nó (tên miền của bạn) với các giá trị tôi muốn trên cùng một cam kết mà tôi đã mã hóa.