it-swarm-es.com

Añadiendo Node-Fields para consultar con db_select ();

Estoy construyendo una consulta usando db_select(); Ahora necesito ordenar mi resultado por un campo que agregué usando campos. ¿Hay alguna manera mejor que unir field_data_field_fieldname y revision?

Esperaba algo como $query->addFieldData("field_foo", "myfoo"); para poder simplemente $query->orderBy('myfoo', 'asc');

También me pregunto por qué no hay ningún ejemplo en la API que se una a los campos de nodos.

1
Nils Riedemann

Que yo sepa, db_select() no tiene conocimiento de entidades o campos (campos, en el contexto del campo que se agregan a los nodos, etc.)

Imagino que necesitaría hacer las uniones a las tablas de campo usted mismo. Encontré un pequeño ejemplo de dbtng_example - dbtng_example.module , pero según mi corazonada y comentarios a continuación - EntityFieldQuery es en realidad la única forma correcta de hacer esto. Los campos pueden definir su propio almacenamiento que rompería por completo su db_select, así que ...

Con un poco de impacto en el rendimiento (que es insignificante para la mayoría) realmente debería hacerlo de la Drupal 7 vías ...

Drupal 7 ahora tiene Fields en el núcleo, y con eso vino EntityFieldQuery , que es una clase de consulta para encontrar entidades (como nodos, términos, etc.) por sus propiedades (como estado publicado) o campos (como field_page_photo o cualquier otro campo que agregue a través de la interfaz de usuario o de otro modo)

o de API:

Esta clase permite buscar entidades en función de las propiedades de la entidad (por ejemplo, nodo-> cambiado), valores de campo y metadatos genéricos de la entidad (paquete, tipo de entidad, ID de entidad e ID de revisión).

Algunos buenos ejemplos y discusión aquí:

¿Cuál es el uso adecuado de EntityFieldQuery?

y me encuentro haciendo referencia a ¿Necesitamos un ejemplo de EntityFieldQuery? también.

4
electblake