Abfrage mit db_select (), um den Knoten anhand seiner ID auszuwählen und Feld und Begriffe zu verbinden


7

Ich versuche, eine Abfrage mit db_select zu schreiben, die einen bestimmten Knoten anhand der ID auswählt, dann die Spalte field_data_field_projectresources verbindet und auch die Begriffe aus der Taxonomie auswählt (da dies ein term_reference-Feld ist).

Ich habe zahlreiche Versuche versucht, aber ich stecke fest (ich bin nicht einmal zu dem Teil über das Beitreten zur Tabelle dr_taxonomy_term_data gekommen).

 $query = db_select('node','n')
  ->condition('n.nid','5')
  ->fields('n')
  ->fields('p');
 $query->Join('field_data_field_projectresources','p','p.entity_id = n.nid');
 $result = $query->execute();

 while($record = $result->fetchAssoc()) {
   print_r($record);
 }

Jede Hilfe geschätzt, danke


Kann verwendet werden : ‚$ result = db_query (" SELECT dr_node.nid, dr_node.title als 'Titel', dr_taxonomy_term_data.name als 'resourceterm' FROM dr_node JOIN dr_field_data_field_projectresources ON dr_node.nid = dr_field_data_field_projectresources.entity_id JOIN dr_taxonomy_term_data ON dr_field_data_field_projectresources.field_projectresources_tid = dr_taxonomy_term_data .tid WHERE dr_node.nid = '5' "); ?> Ressourcen, warum </ br> <? Php foreach ($ result as $ row) {print $ row-> resourceterm; ?> <br/> <? php} '
Andrew Welch

Antworten:


8

Ich hoffe das funktioniert bei dir:

 $query = db_select('node','n');
 $query->join('field_data_field_projectresources','p','p.entity_id = n.nid');
 $query->fields('n',array('yourfieldnames'))
       ->fields('p',array('yourfieldnames'))
       ->condition('n.nid','5');
 $result = $query->execute();

Hier ist eine weitere Antwort , die Ihnen sehr helfen wird.

Lesen Sie die Dokumentation zu 'join' auf drupal.org .


1
Die joinMethode ist leider nicht verkettbar, daher muss sie in einer eigenen Zeile stehen.
Rocketeerbkw
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.