it-swarm-ko.tech

일련의 노드와 필드 값을 필드 값으로 필터링하기 위해 쿼리를 어떻게 작성합니까?

희망적으로 Drupal 7 경험을 가진 사람이 나를 올바른 방향으로 가리킬 수 있습니다.

일부 노드를 쿼리하고 그룹화하여 필드 값으로 정렬하는 사용자 정의 모듈을 만들고 있습니다.

뷰를 사용하려고했지만 필요한 형식으로 결과를 얻을 수없는 것 같습니다. 그래서 데이터베이스를 직접 쿼리하고 자체 출력을 작성하기로 결정했습니다.

Drupal 7에서 노드를 쿼리하는 가장 쉬운 방법은 무엇입니까? 지금 모든 필드에 대한 테이블이 있다는 것을 알았으므로 매우 복잡하게 작성 해야하는 쿼리를 만드는 것처럼 보입니까?

노드 데이터를 쿼리하고 결과를 필터링/그룹화하는 방법이 있거나 원시 SQL을 사용해야 만 수행 할 수 있습니다.

후자가 나에게 Drupal 7 Field values?

6
Camsoft

나는 제레미의 견해에 대한 노력을 제안했다. 그러나 코드에서 직접 쿼리를 작성해야하는 경우 EntityFieldQuery 을 사용하는 것이 좋습니다.

예를 들어, 텍스트 필드 값이 'foo'인 모든 노드의 수를 얻으려면 다음을 수행하십시오.

// Get field information
$field = field_info_field('field_name');
$query = new EntityFieldQuery;
$query->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', 'NODE TYPE')
  ->fieldCondition($field, 'value', 'foo')
  ->count();

$count = $query->execute();

카운트를 원하지 않고 결과를 원한다면 카운트 부분을 생략하고 결과를 가져옵니다.

foreach ($query->execute() as $entity_type => $entities) {
  foreach ($entities as $entity_id => $entity) {
  ...
  }
}

Commerce Guys에는 간단한 사용 사례를 자세히 설명하는 좋은 블로그 게시물 도 있습니다.

12
jhedstrom

뷰를 사용하려고했지만 필요한 형식으로 결과를 얻을 수없는 것 같습니다. 그래서 데이터베이스를 직접 쿼리하고 자체 출력을 작성하기로 결정했습니다.

나의 첫번째 제안은 견해를 더 열심히 시도하는 것이다.

Drupal 7에서 노드를 쿼리하는 가장 쉬운 방법은 무엇입니까? 지금 모든 필드에 대한 테이블이 있다는 것을 알았으므로 매우 복잡하게 작성 해야하는 쿼리를 만드는 것처럼 보입니까?

그렇습니다. 그래서 첫 제안을 한 것입니다.

한 가지 팁은 뷰를 사용하여 쿼리를 수행하지만 뷰를 프로그래밍 방식으로 호출하여 자체 출력을 생성하는 것입니다.

두 번째 팁은 뷰에서 시작된 쿼리를 사용하는 것입니다.

drupal 7의 필드는 필드 API를 통해 정의되므로 필드를 저장하고 쿼리를 정의하는 방법을 찾으려면 해당 필드를 살펴 봐야합니다. 간단하지 않습니다.

1
Jeremy French