Как загрузить сущность по значениям ее полей

В Drupal существует класс EntityFieldQuery, который позволяет получить сущность по значениям ее полей.

Пример использования

$query = new EntityFieldQuery();
// В качестве первого параметра допустимо передавать следующие значения:
// 'entity_type', 'bundle', 'revision_id' или 'entity_id'.
$query->entityCondition('entity_type', 'node');
// В качестве первого параметра допустимо передавать название колонки таблицы, 
// которая описана в hook_schema() в базовой таблице сущности.
$query->propertyCondition('type', 'article');
// В качестве первого параметра передаем название филда, в качестве второго - название колонки, 
// третий параметр - значение.
$query->fieldCondition('field_article_page_reference', 'nid', 5);
// Сортируем результат, в качестве первого значения допустимо передавать:
// 'entity_type', 'bundle', 'revision_id' или 'entity_id'.
$query->entityOrderBy('entity_id');

// Обрабатываем запрос, сохраняем все полученные иентификаторы в один массив.
$nids = array();
foreach ($query->execute() as $record) {
  foreach ($record as $entity) {
    $nids[] = $entity->nid;
  }
}

$nodes = !empty($nids) ? node_load_multiple($nids) : FALSE;

Комментарии (0)