public function TermStorage::getNodeTerms in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/taxonomy/src/TermStorage.php \Drupal\taxonomy\TermStorage::getNodeTerms()
Returns all terms used to tag some given nodes.
Parameters
array $nids: Node IDs to retrieve terms for.
array $vocabs: (optional) A vocabularies array to restrict the term search. Defaults to empty array.
string $langcode: (optional) A language code to restrict the term search. Defaults to NULL.
Return value
array An array of nids and the term entities they were tagged with.
Overrides TermStorageInterface::getNodeTerms
File
- core/
modules/ taxonomy/ src/ TermStorage.php, line 320 - Contains \Drupal\taxonomy\TermStorage.
Class
- TermStorage
- Defines a Controller class for taxonomy terms.
Namespace
Drupal\taxonomyCode
public function getNodeTerms(array $nids, array $vocabs = array(), $langcode = NULL) {
$query = db_select('taxonomy_term_field_data', 'td');
$query
->innerJoin('taxonomy_index', 'tn', 'td.tid = tn.tid');
$query
->fields('td', array(
'tid',
));
$query
->addField('tn', 'nid', 'node_nid');
$query
->orderby('td.weight');
$query
->orderby('td.name');
$query
->condition('tn.nid', $nids, 'IN');
$query
->addTag('term_access');
if (!empty($vocabs)) {
$query
->condition('td.vid', $vocabs, 'IN');
}
if (!empty($langcode)) {
$query
->condition('td.langcode', $langcode);
}
$results = array();
$all_tids = array();
foreach ($query
->execute() as $term_record) {
$results[$term_record->node_nid][] = $term_record->tid;
$all_tids[] = $term_record->tid;
}
$all_terms = $this
->loadMultiple($all_tids);
$terms = array();
foreach ($results as $nid => $tids) {
foreach ($tids as $tid) {
$terms[$nid][$tid] = $all_terms[$tid];
}
}
return $terms;
}