Đây là câu hỏi tôi tự đặt ra khi đối mặt với các dự án mới, Field Collection vs Entity Reference + thực thể tùy chỉnh hoặc nếu cấu trúc đơn giản, Field Collection so với trường tùy chỉnh với một số cột db / Multifield . Đây là ý kiến của tôi dựa trên kinh nghiệm của tôi .
Multifield là một khái niệm tuyệt vời, nó là một phiên bản "nhẹ" của bộ sưu tập trường, thay vì tạo cấu trúc thực thể với các mối quan hệ, nó bao gồm các trường hợp sử dụng đơn giản mà không tạo thực thể. Tuy nhiên, nó có một số vấn đề , chẳng hạn như không tích hợp Tính năng, không thực sự đa ngôn ngữ, v.v. (vì vậy nếu bạn có kế hoạch sử dụng điều này, các đóng góp có thể sẽ thực sự được hoan nghênh).
Field Collection là một giải pháp tuyệt vời nếu bạn đang làm một trang web có thể được thực hiện chỉ với một vài điều chỉnh ở đây và đó, nó cung cấp cho các nhà xây dựng trang web một công cụ mạnh mẽ để tạo các cấu trúc phức tạp mà không phải lo lắng nhiều về nội bộ. Về cơ bản, nó sẽ tạo ra một thực thể liên quan đến thực thể "máy chủ" bởi các id, cho phép thêm các trường vào nó và mọi thứ. Những nhược điểm sẽ xuất phát từ kiến thức bên trong của bộ sưu tập Trường mà bạn cần thực hiện các thao tác phức tạp như quản lý Bộ sưu tập trường với Tham chiếu thực thể trên đó hoặc di chuyển dữ liệu. Vì nó là một công cụ chung, nên việc đi xa hơn một bước là khá phức tạp.
Một tùy chọn khác mà bạn có đó là sử dụng ECK với Entity Reference, nhưng trải nghiệm của tôi với điều này cho đến nay vẫn là một thảm họa, tôi thấy cách dễ dàng hơn để tạo loại thực thể theo mã mà không cần người trợ giúp.
Đó là vấn đề bạn cần và phù hợp nhất với dự án của bạn, nếu bạn có thời gian và nhà phát triển tạo các loại thực thể liên quan đến mô hình dữ liệu của bạn thông qua Tham chiếu thực thể, bạn sẽ có nhiều quyền kiểm soát hơn đối với những gì đang xảy ra với cấu trúc dữ liệu của bạn, nhưng sau đó bạn cũng là "chịu trách nhiệm" cho điều đó.
Sau khi thử nghiệm một lúc với tất cả các giải pháp được mô tả ở trên, trong nhóm của tôi, chúng tôi luôn tìm kiếm các loại thực thể + ER, nhưng tôi có thể thấy rằng đối với các dự án nhỏ, không di chuyển dữ liệu hoặc thiết lập i18n phức tạp, Field Collection chỉ là cách nhanh nhất để đi.