web-dev-qa-db-ja.com

EntityFieldQueryを使用してエンティティのすべてのリビジョンを取得する

EntityFieldQueryを使用してエンティティのすべてのリビジョンを取得しようとしています。

これが私のコードです:

function entity_hash_queue($entity_restrict = NULL) {
  if ($entity_restrict) {
    $entity_info = entity_get_info($entity_restrict);
    if ($entity_info['entity keys']['revision'] != NULL) {
      $query = new EntityFieldQuery;
      $query->entityCondition('entity_type', $entity_restrict);
      $results = $query->execute();
    }
  }
}

エンティティのすべてのリビジョンを確実に取得するために使用できるEntityFieldQueryオブジェクトのプロパティを把握しようとしています(そのエンティティがリビジョンをサポートしている場合)。

すべてのエンティティオブジェクトのリストを取得していますが、各オブジェクトの各リビジョンは取得していません。その情報を取得するにはどうすればよいですか?何も見つかりません。

4
Jack Ryan

この場合、EntityFieldQueryの代わりにdb_selectを使用して、リビジョンテーブルからすべてのリビジョンを取得します。

$result = db_select('your_entity_revision_table', 'yert')
    ->fields('yert')
    ->condition('entity_id', {your Entity ID})
    ->execute()
    ->fetchAllAssoc('revision_id');

kpr($result);
1
moertle