2

我使用 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')- 没有错误。

谢谢

4

2 回答 2

0

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

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

于 2015-03-09T14:28:35.037 回答
0

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

  ->fieldCondition('field_user', 'first_name', $str, 'RLIKE')
于 2013-11-27T07:30:12.033 回答