Programez de 15 ani, 10 cu PHP, dar pe primul meu proiect Drupal. Folosind Drupal 9.
Încerc să recuperez o entitate (tip de conținut personalizat) care are 2 câmpuri de entitate cu valori multiple (utilizator). Dacă valoarea pe care o am este într-un câmp, vreau să-l primesc pe celălalt. Problema este că nu îmi pot da seama cum să cer entitatea când valoarea scalară pe care o am este în listă. Iată ce am:
returnează \Drupal::entityQuery('nod')
->condition('tip', 'relaţii_osj')
->condition('field_supervised_reps', [$userId], 'IN')
->execute();
Care generează acest SQL:
„SELECTARE „base_table”. „vid” AS „vid”, „base_table”. „nid” AS „nid”
DIN
„nod” „base_table”
INNER JOIN "node_field_data" "node_field_data" ON "node_field_data"."nid" = "base_table"."nid"
INNER JOIN "node__field_supervised_reps" "node__field_supervised_reps" ON "node__field_supervised_reps"."entity_id" = "base_table"."nid"
WHERE ("node_field_data"."type" = 'osj_relationships') ȘI ("node__field_supervised_reps"."field_supervised_reps_target_id" IN ('2458'))'
A doua parte a clauzei WHERE caută valoarea câmpului din parametrul meu. Am nevoie de el pentru a-mi căuta parametrul în câmp. Am încercat și CONTAINS, dar asta pare să presupună că valoarea câmpului este mai degrabă un șir decât o matrice. Dacă aș putea întoarce acea clauză WHERE, ar fi perfect. adică.
(('2458') ÎN "node__field_supervised_reps"."field_supervised_reps_target_id")
Presupun că aș putea folosi „CONTAINS” dacă aș putea imploda lista de câmpuri, dar asta ar risca accesări false.
Orice sugestii?