Как я могу получить все связанные объекты узла программно?


Я пишу несколько сценариев drush и обнаружил, что мне нужно получить связанные объекты (узлы) текущего узла. Однако я могу найти информацию только для построения представлений, которые делают это.

Может ли кто-нибудь сказать мне, существует ли программный способ извлечения всех сущностей, относящихся к текущему nid, с фильтром по типу сущности?

В конечном счете мне нужно получить список идентификаторов узлов, которые относятся к текущему идентификатору узла.

Взаимосвязь зависит от отношение модуль.

 1
Author: dibs, 2016-06-19

1 answers

Таким образом, вы получите все ссылки на отображаемые элементы узла.

  $current_path = explode('/', $_GET['q']);
  if ($current_path[0] == 'node' && is_numeric($nid = $current_path[1])) {
    $field = 'my_field';
    $bundle = 'my_bundle';
    $query = db_query("SELECT {$field}_target_id FROM field_data_{$field} WHERE entity_id = :nid AND bundle = :bundle",
      array(
        ':nid' => $nid,
        ':bundle' => $bundle,
      )
    );
    foreach($query as $row) {
      $target_ids[] = $row->{$field . "_target_id"};
    }
    $nodes = node_load_multiple($target_ids);
  }

Если у вас больше полей ссылок на сущности, вам необходимо расширить запрос (с большим количеством соединений) в соответствии с вашими полями.

 0
Author: mchar, 2016-06-23 11:57:07