Làm cách nào tôi có thể thêm điều kiện vào truy vấn thực thể Drupal 9 bằng truy vấn thực thể khác trên một loại thực thể khác?
Tôi sẽ minh họa câu hỏi bằng cách mô tả một trường hợp sử dụng cụ thể, mặc dù tôi không nghĩ rằng sẽ khó đưa ra bất kỳ trường hợp sử dụng hợp lý nào.
Ứng dụng cho trường hợp sử dụng này theo dõi các bài báo trong tài liệu y khoa đã xuất bản. Một bài báo được đại diện bởi một loại thực thể tùy chỉnh theo dõi thời điểm nó được nhập vào hệ thống, liệu toàn văn của bài báo đã được lấy hay chưa, chủ đề nào đã được chỉ định cho bài báo trong chu kỳ đánh giá nào, khi nào và trên tạp chí nào được công bố, và nhiều thông tin khác.
Loại thực thể tùy chỉnh thứ hai tồn tại để đại diện cho các lô ("gói") bài báo được chỉ định để xem xét, theo dõi thời điểm các lô được chỉ định, chủ đề nào và chuyên gia ung thư nào cũng như kết quả của những đánh giá đó là gì. Một bài báo có thể được gán cho nhiều gói đánh giá, mỗi gói có nhiều người đánh giá được chỉ định và mỗi gói đánh giá có thể yêu cầu đánh giá cho bất kỳ số lượng bài báo nào.
Mô-đun tìm kiếm cho ứng dụng này có yêu cầu rằng các bài báo có thể được tìm kiếm dựa trên nhiều tiêu chí khác nhau, hầu hết có thể được áp dụng bằng cách kiểm tra Mạo từ
các thực thể, nhưng một số trong đó chỉ có thể được thực hiện bằng cách xem các giá trị trong gói tin
thực thể. Ví dụ, một tìm kiếm ví dụ có thể yêu cầu tìm tất cả các bài báo được xuất bản trong vòng 12 tháng qua trên tạp chí J và được chỉ định bởi nhà phê bình R.
Trong một CMS phù hợp hơn để làm việc trực tiếp với các bảng SQL quan hệ, sẽ rất đơn giản để hỗ trợ tìm kiếm như vậy bằng cách sử dụng một vài phép nối bảng. Nhưng Drupal làm cho cách tiếp cận đó kém hấp dẫn hơn, vì chúng tôi không có tài liệu nào đảm bảo rằng các quy ước đặt tên bảng và cột bên dưới các thực thể có thể dựa vào để không thay đổi.
Tôi có thể tạo và thực thi hai truy vấn thực thể riêng biệt và sử dụng kết quả của truy vấn thứ hai để loại bỏ các kết quả được trả về bởi truy vấn thứ nhất không có trong kết quả của truy vấn thứ hai. Nhưng một trong những nhược điểm của phương pháp này là nó phá vỡ cơ chế phân trang Drupal.
Tôi có thể cố gắng bắt chước những gì DBMS sẽ thực hiện hiệu quả hơn nhiều bằng cách cung cấp các ID thực thể được truy vấn thứ hai trả về thành một điều kiện trên truy vấn đầu tiên, nhưng ai biết giới hạn nội bộ nào có thể gặp phải khi kết quả của truy vấn thứ hai là to lớn?
Tôi có thể triển khai một loại bùn để chuẩn hóa dữ liệu, lưu trữ các tham chiếu thực thể từ Mạo từ
thực thể trở lại gói tin
các thực thể lần lượt trỏ trở lại Mạo từ
thực thể, nhưng tất cả chúng ta đều biết các vấn đề khi cố gắng giữ đồng bộ thông tin ở nhiều nơi.
Nếu tất cả các các tìm kiếm dành cho các bài báo được chỉ định để xem xét, tôi có thể xoay chuyển tình thế và sử dụng truy vấn thực thể trên gói tin
loại, theo tham chiếu của nó đến Mạo từ
thực thể cho các tiêu chí khác cần được kiểm tra. Nhưng một tỷ lệ lớn các tìm kiếm là để tìm các bài báo cho dù chúng đã được chỉ định để xem xét hay chưa. Vì vậy, đối với đường dẫn này, tôi phải triển khai song song hai bộ logic tìm kiếm riêng biệt, một bộ dành cho các tìm kiếm liên quan đến việc chỉ định để xem xét các gói và bộ thứ hai dành cho các tìm kiếm không quan tâm đến việc chỉ định để xem xét. Và cách tiếp cận này vẫn không giải quyết được các tìm kiếm đang tìm kiếm một cách rõ ràng các bài báo có không phải được chỉ định để xem xét. Và hãy nhớ rằng, tôi đang làm cho ví dụ về trường hợp sử dụng này trở nên đơn giản bằng cách giới hạn nó chỉ ở hai loại thực thể.
Google (và tìm kiếm diễn đàn này) tiếp tục chuyển hướng tôi đến thông tin về cách sử dụng API truy vấn cơ sở dữ liệu cấp dưới thay vì hệ thống truy vấn thực thể, ít nhất là với các thuật ngữ truy vấn tôi đang sử dụng.
Có cách nào để sử dụng truy vấn phụ (hoặc thậm chí tốt hơn là tham gia vào một loại thực thể khác) trong API truy vấn thực thể không? Nếu không, có triển vọng hỗ trợ chức năng như vậy đang được thảo luận trong Drupal Valhalla không?