2012-02-20 88 views
0

我是來自Drupal 6的Drupal 7的新手。在6中,我用於構建自定義模塊並使用標準db_query查詢CCK字段。在這樣做的時候,我能夠使用諸如JOIN和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來加入各種內容類型?

感謝, 豪伊

回答

0

一個EntityFieldQuery的主要好處是,它並不關心你用的是什麼領域的後端。要做到這一點,它不會提供複雜的操作,因爲它必須支持也適用於像MongoDB這樣的後端的選項子集。

如果您必須在SQL中對字段值執行如此複雜的查詢,也許最好重新考慮您的字段模式。