web-dev-qa-db-ja.com

EntityFieldQueryを使用してノード全体ではなく特定のノードフィールドを取得する

Drupal 7のデータベースから特定のノードを取得するための標準は次のようになります:

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node');
$query->entityCondition('bundle', 'page');
$query->fieldCondition('field_category', 'value', $category_id);

$result = $query->execute();
$nids = array_keys($result['node']);
$nodes = node_load_multiple($nids);

パフォーマンスを向上させるために、ノードのすべてのフィールドをロードするのではなく、ノードの特定のフィールド(たとえば、タイトル)のみをロードするように指定する方法はありますか?

私はSQLを使用しないソリューションを好みますDrupal関数が提供する機能(信頼性、結果のキャッシュ、将来の保証など))。

ありがとうございました。

3
Mario Awad

いいえ、ありません。 EFQはエンティティIDのみを返すことができます。

それを回避する方法はあるかもしれませんが、その論理的な理由があります。モジュールはさまざまなフックでこれらのフィールドの値を変更する可能性がありますが、直接返される値がエンティティのロード時と同じである保証はありません。

4
Berdir