2012-02-20 4 views
0

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

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

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

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

и

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

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

Спасибо, Howie

ответ

0

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

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

Смежные вопросы