Ви можете використовувати клас EntityFieldQuery для запиту бази даних та отримання результатів у формі списку, подібного до node_load_multiple()
.
Цього можна досягти, створивши клас, застосувавши умови та виконавши запит, наприклад:
<?php
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'TYPE') // E.g. node, entityform, taxonomy_term
->entityCondition('bundle', 'BUNDLE')
->fieldCondition('field_foo', 'value', 'STRING')
->range(0,10);
$result = $query->execute();
?>
Це створить масив, такий як:
array (
'TYPE' =>
array (
123 =>
stdClass::__set_state(array(
'nid' => '123', // Can be also tid when loading terms.
'key' => 'value',
)),
456 =>
stdClass::__set_state(array(
'nid' => '456',
'key' => 'value',
)),
),
)
Щоб витягти ідентифікатор з результуючого масиву, ви можете використовувати: current(current($result))->tid
.
Ось більш просунутий приклад:
<?php
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'article')
->propertyCondition('status', NODE_PUBLISHED)
->fieldCondition('field_news_types', 'value', 'spotlight', '=')
->fieldCondition('field_photo', 'fid', 'NULL', '!=')
->fieldCondition('field_faculty_tag', 'tid', $value)
->fieldCondition('field_news_publishdate', 'value', $year . '%', 'like')
->fieldOrderBy('field_photo', 'fid', 'DESC')
->range(0, 10)
->addMetaData('account', user_load(1)); // Run the query as user 1.
$result = $query->execute();
if (isset($result['node'])) {
$news_items_nids = array_keys($result['node']);
$news_items = entity_load('node', $news_items_nids);
}
?>
Див.: Як використовувати EntityFieldQuery на Drupal.org для отримання додаткового пояснення.