it-swarm-ko.tech

EntityFieldQuery를 사용하여 엔티티와 연관된 필드 데이터를 어떻게 검색합니까?

Drupal 7. 엔터티 개념에 대해 여전히 혼란 스러워요. MP3 필드의 노드 유형 오디오가 있습니다. EntityFieldQuery를 사용하여 모든 오디오를 찾을 수 있습니다. 노드가 있지만 "file_managed"테이블에 저장된 MP3의 URL이 필요하며 검색 할 방법을 찾지 못했습니다.

이것이 내가 가진 것입니다 :

// Query audio nodes
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', 'audio')
  ->propertyCondition('status', 1);
$result = $query->execute();

$result 배열에 URL이 없습니다. 적어도 나는 그것을 찾을 수 없습니다. 나는 단지 신용을 얻는다.

3
krabbe

EntityFieldQuery :: count () 가 호출되지 않으면 EntityFieldQuery :: execute () 에서 리턴 된 것은 다음 구조를 갖는 배열입니다.

[entity type] => array([entities])
[entity] => array([relevant ID] => [entity object])

관련 ID는 일반적으로보고 한 쿼리에서와 같이 엔티티 ID입니다. 엔터티 개체에 포함 된 정보를 이해하려면 entity_create_stub_entity ()entity_get_info () 를 참조하십시오.

쿼리하는 엔터티와 관련된 모든 필드를 가져 오려면 다음 코드를 실행하면됩니다.

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', 'audio')
  ->propertyCondition('status', 1);
$result = $query->execute();

if (!empty($result['node'])) {
  $nodes = entity_load('node', array_keys($result['node']);
}
3
kiamlaluno

EntityFieldQuery에서는 쿼리 결과에 추가 필드 데이터를 추가 할 수 없습니다. 나중에 엔티티를로드 할 수 있습니다. documentation 에서 :

$result = $query->execute();
$entities = entity_load($my_type, array_keys($result[$my_type]));

위의 예에서 $mt_type는 엔티티 유형 (노드)입니다.

1
googletorp