Tôi đã lập trình được 15 năm, 10 năm với PHP, nhưng với dự án Drupal đầu tiên của tôi. Sử dụng Drupal9.
Tôi đang cố truy xuất một thực thể (loại nội dung tùy chỉnh) có 2 trường thực thể (người dùng) đa giá trị. Nếu giá trị tôi có nằm trong một lĩnh vực, tôi muốn lấy một lĩnh vực khác. Vấn đề là tôi không thể tìm ra cách yêu cầu thực thể khi giá trị vô hướng tôi có trong danh sách. Đây là những gì tôi đã có:
trả về \Drupal::entityQuery('nút')
->điều kiện('loại', 'osj_relationships')
->điều kiện('field_supervised_reps', [$userId], 'IN')
->thực thi();
Cái nào tạo ra SQL này:
'CHỌN "base_table".."vid" NHƯ "vid", "base_table".."nid" NHƯ "nid"
TỪ
"nút" "base_table"
INNER THAM GIA "node_field_data" "node_field_data" BẬT "node_field_data".."nid" = "base_table".."nid"
INNER THAM GIA "node__field_supervised_reps" "node__field_supervised_reps" BẬT "node__field_supervised_reps".."entity_id" = "base_table".."nid"
WHERE ("node_field_data".."type" = 'osj_relationships') AND ("node__field_supervised_reps".."field_supervised_reps_target_id" IN ('2458'))'
Phần thứ 2 của mệnh đề WHERE đang tìm kiếm giá trị trường trong tham số của tôi. Tôi cần nó để tìm tham số của mình trong trường. Tôi cũng đã thử CONTAINS nhưng điều đó dường như cho rằng giá trị trường là một chuỗi chứ không phải là một mảng. Nếu tôi có thể biến mệnh đề WHERE xung quanh nó thì thật hoàn hảo. I E.
(('2458') TRONG "node__field_supervised_reps".."field_supervised_reps_target_id")
Tôi cho rằng tôi có thể sử dụng 'CHỨA' nếu tôi có thể làm nổ tung danh sách trường nhưng điều đó sẽ có nguy cơ gây ra các lần truy cập sai.
Bất kỳ đề xuất?