使用fieldCondition和addTag时,EntityFieldQuery会引发错误(' node_access')

时间:2013-10-07 10:38:39

标签: drupal-7

我使用Drupal 7。 这段代码:

$query = new EntityFieldQuery();
$resFirstName = $query->entityCondition('entity_type', 'node')
            ->entityCondition('bundle', 'user')
            ->fieldCondition('field_user_first_name', 'value', $str, 'RLIKE')
            ->range(0, 15)
            ->addTag('node_access')
            ->execute();

当网站的用户不是管理员时会引发以下错误: “PDOException:SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'field_data_field_user_first_name0.nid':SELECT field_data_field_user_first_name0.entity_type AS entity_type,...” 如果我删除->fieldCondition('field_user_first_name', 'value', $str, 'RLIKE')->addTag('node_access') - 没有错误。

由于

2 个答案:

答案 0 :(得分:0)

我有一个类似的案例。在保留所有其他条件和参数的同时,我能够解决这个问题,同时修改fieldCondition

  ->fieldCondition('field_user', 'first_name', $str, 'RLIKE')

答案 1 :(得分:0)

我遇到了类似的问题。 我将node_access标记添加到查询中,我无法将其删除 模块依赖它来影响全局的站点查询。 我不得不添加一个fieldCondition,所以在我的情况下解决方案是 $ query-> addMetadata(' account',user_load(1));

https://www.drupal.org/node/997394#comment-5096664