it-swarm-korea.com

db_select ();를 사용하여 쿼리에 노드 필드 추가

db_select();을 사용하여 쿼리를 작성 중입니다. 이제 필드를 사용하여 추가 한 필드별로 결과를 정렬해야합니다. field_data_field_fieldname 및 수정에 가입하는 것보다 더 좋은 방법이 있습니까?

나는 $query->addFieldData("field_foo", "myfoo"); 같은 것을 바라고 있었기 때문에 간단히 $query->orderBy('myfoo', 'asc');

또한 노드 필드를 조인하는 API에 왜 예제가 없는지 궁금합니다.

1
Nils Riedemann

내가 아는 한, db_select()은 엔티티 또는 필드 (필드, 노드에 추가되는 필드의 컨텍스트 등)를 인식하지 못합니다.

필드 테이블에 대한 조인을 직접 수행해야한다고 생각합니다. dbtng_example--dbtng_example.module 에서 약간의 예를 찾았지만 아래의 직감과 의견에 따라-EntityFieldQuery 실제로이 작업을 수행하는 유일한 올바른 방법입니다. 필드는 db_select를 완전히 중단하는 자체 스토리지를 정의 할 수 있으므로 ...

약간의 성능 저하 (대부분의 경우 무시할 수 있음)가 있으면 실제로 Drupal 7 way ...

Drupal 7에는 이제 필드가 코어에 있으며, 그와 함께 속성 (예 : 게시 된 상태) 또는 필드 (예 : field_page_photo)로 엔티티 (예 : 노드, 용어 등)를 찾기위한 쿼리 클래스 인 EntityFieldQuery 가 있습니다. 또는 UI 등을 통해 추가 한 기타 필드)

또는 API :

이 클래스를 사용하면 엔티티 속성 (예 : 노드-> 변경됨), 필드 값 및 일반 엔티티 메타 데이터 (번들, 엔티티 유형, 엔티티 ID 및 개정 ID)를 기반으로 엔티티를 찾을 수 있습니다.

여기에 좋은 예와 토론이 있습니다.

EntityFieldQuery의 적절한 사용은 무엇입니까?

그리고 저는 EntityFieldQuery 예제가 필요합니까? 도 참조합니다.

4
electblake