Thông thường, Data Mapper ánh xạ dữ liệu của một bảng cụ thể. (Về mặt lý thuyết, nó nên liên lạc giữa Storage và Object Object, nhưng trong trường hợp của tôi thì không thể thực hiện được, vì vậy tôi đang liên lạc trực tiếp với các bảng.)
Bảng1Mappper> Bảng1
Nhưng nếu bảng đó yêu cầu dữ liệu được nối từ một bảng khác, thì bạn đang mở rộng phạm vi của Trình ánh xạ dữ liệu của mình, điều này chỉ giả sử ánh xạ từ một bảng.
Table1Mapper> Table1: bên trong tham gia: Table2
Sẽ không tốt hơn nếu Bảng2 có trình Table2Mapper
ánh xạ riêng để ánh xạ dữ liệu của nó?
Nếu bạn nghĩ Yes
, sau đó nếu bạn muốn hiển thị danh sách các bản ghi từ Table1Mapper và sau đó sử dụng Table2Mapper để có được những dữ liệu được cho là được nối, Bạn sẽ chạy một truy vấn trong một vòng lặp, điều này cũng không tốt.
Bạn hiểu gì về cách này?
Một cách khác là thay đổi mapper của bạn để xử lý các bảng phụ?
class Table1Mapper {
public main_table = 'table1';
public sub_table1 = 'table2';
}
Mà tôi nghĩ là ổn, nhưng chỉ cho đến khi phạm vi của toàn bộ trình ánh xạ xử lý một thực thể cụ thể trong ứng dụng. Ví dụ post
và post_author
. Nhưng nếu phạm vi khác nhau như post
và gallery
, ở trên sẽ không cung cấp một trình ánh xạ dữ liệu lý tưởng. Để minh họa điều này
class PostMapper {
public table_name = 'tbl_post';
public gallery_table_name = 'tbl_gallery';
}
Có đúng không? Tuy nhiên, tuy nhiên, bạn sẽ muốn lấy các phòng trưng bày của một bài đăng trong một truy vấn, bởi vì thêm một chi phí truy vấn trong một vòng lặp không phải là một hiệu suất giải pháp tốt.
Bạn nghĩ gì là cách đúng đắn để giải quyết vấn đề này trong Mẫu DataMapper / hoặc bất kỳ mẫu nào khác nếu nó có cách xử lý tốt hơn các trường hợp như vậy?