我是来自Drupal 6的Drupal 7的新手.6我曾经构建自定义模块并使用标准db_query来查询CCK字段。通过这样做,我可以使用JOIN和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来加入各种内容类型?
谢谢, 豪伊
答案 0 :(得分:0)
EntityFieldQuery的一个主要好处是它不关心您正在使用的字段后端。为了实现这一点,它不提供复杂的操作,因为它必须支持也适用于像MongoDB这样的后端的选项子集。
如果您必须在SQL上对字段值执行此类复杂查询,那么重新考虑您的字段架构可能会更好。