Цикл по родителям таксономии


Как я могу просмотреть таксономию в drupal 8. Я нашел эту статическую функцию, но требуется TID, как я могу выполнить цикл по всей таксономии без использования TID?

Drupal::entityManager()->getStorage('taxonomy_term')->loadAllParents($tid);
Author: kiamlaluno, 2016-06-13

2 answers

Я думаю, что вы неправильно используете слово "родитель".

Термины словаря могут быть отсортированы в дереве. И родители определенного термина являются теми, кто выше в этой иерархии. Итак, если вы хотите, чтобы все родители термина, конечно, вам нужно так сказать, какой термин и указать его идентификатор как $tid.

Однако, если вам просто нужны все термины таксономии, вы можете вместо этого использовать loadTree($vid). $vid - это идентификатор вашего словарного запаса.

Если вы хотите загрузить все термины таксономии, игнорируя к какому словарю они принадлежат, тогда это лучшее решение:

$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadMultiple();

Затем, чтобы получить доступ к данным термина, выполните

foreach ($terms as $term) {
    $tid = $term->id();
    $vid = $term->getVocabularyId();
    $name = $term->getName();
}

Если все, что вам нужно, это идентификаторы всех терминов, этого достаточно:

$tids = \Drupal::entityQuery('taxonomy_term')->execute();
 2
Author: Maouna, 2016-06-14 06:45:48

Я сам разобрался, прокрутив таблицу с помощью API базы данных

public function getTaxonomy(){
  $query = db_query("SELECT * FROM taxonomy_term_field_data");

  $taxonomy = [];

  foreach($query as $val){
    $taxonomy[] = array(
        'tid' => $val->tid,
        'vid' => $val->vid,
        'name' => $val->name
      );
  }

  return $taxonomy;      

}

РЕДАКТИРОВАТЬ: Все же лучшее решение с api вместо использования ручного SQL-запроса, согласно предложению Eyal.

public function getTaxonomy(){

  $terms = \Drupal::database()->select('taxonomy_term_field_data', 'td')->fields('td')->execute()->fetchAll();

  $taxonomy = [];

  foreach($terms as $val){
    $taxonomy[] = array(
        'tid' => $val->tid,
        'vid' => $val->vid,
        'name' => $val->name
      );
  }

  return $taxonomy;      

}
 1
Author: Gabriel, 2016-06-14 08:56:20