Bạn có thể sử dụng lớp EntityFieldQuery để truy vấn cơ sở dữ liệu và tìm nạp các kết quả dưới dạng danh sách tương tự node_load_multiple()
.
Điều này có thể đạt được bằng cách tạo một lớp, áp dụng các điều kiện và thực hiện truy vấn, ví dụ:
<?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();
?>
Điều này sẽ tạo ra các mảng như:
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',
)),
),
)
Để lấy ID từ mảng kết quả, bạn có thể sử dụng : current(current($result))->tid
.
Đây là ví dụ nâng cao hơn:
<?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);
}
?>
Xem: Cách sử dụng EntityFieldQuery tại Drupal.org để được giải thích thêm.