Drupal 7 EntityFieldQuery - PullRequest
       23

Drupal 7 EntityFieldQuery

0 голосов
/ 20 февраля 2012

Я новичок в Drupal 7, пришедшем из Drupal 6. В 6 я использовал для создания пользовательских модулей и использовал стандартные db_query для запроса полей CCK. При этом я мог использовать такие вещи, как JOINs и LOWER(REPLACE(n.title, ' ', '_')) = '%s'.

Мне интересно, есть ли способ сделать это, используя EntityFieldQuery. Концепция, лежащая в основе EFQ, кажется довольно простой, но с точки зрения полевых условий, похоже, что я могу проверить только значение определенного поля с помощью оператора. Что если я захочу использовать приведенный выше код, чтобы проверить, равно ли преобразованное значение моему значению?

Поскольку он загружает то, что ему нужно для выполнения запроса и извлечения NID и VID, кажется, что мне не нужно использовать JOIN, потому что он рассматривает все, что нужно для указанного типа контента. Использует:

$query->entityCondition('bundle', array('article', 'page'));

и

$query->propertyCondition('type', array('article', 'page', 'blog'));

фактически то же самое утверждение JOIN? Используют ли оба оператора NID для объединения различных типов контента?

Спасибо, Howie

1 Ответ

0 голосов
/ 21 февраля 2012

Одним из основных преимуществ EntityFieldQuery является то, что ему все равно, какой бэкэнд поля вы используете.Для этого он не предоставляет сложных операций, поскольку должен поддерживать подмножество опций, которые также будут работать для бэкэнда, такого как MongoDB.

Если вам нужно выполнять такие сложные запросы в SQL для значений полей, может быть, было бы лучше переосмыслить вашу схему поля.

...