使用 entityQuery 查询数据时出错:Drupal\Core\Entity\Query\QueryException: Entity queries must explicitly set whether the query should be access checked or not.

Drupal 10.0.x 使用 entityQuery 查询数据时出错,错误信息:

Drupal\Core\Entity\Query\QueryException: Entity queries must explicitly set whether the query should be access checked or not. See Drupal\Core\Entity\Query\QueryInterface::accessCheck(). in Drupal\Core\Entity\Query\Sql\Query->prepare() (line 141 of /www/drupal/web/core/lib/Drupal/Core/Entity/Query/Sql/Query.php).

下面是出错的代码,请问要怎么解决?

// 获取最新的 5 篇文章。
$ids = \Drupal::entityQuery('node')
  ->condition('type', 'article')
  ->orderBy('created', 'DESC')
  ->range(0, 5)
  ->execute();
2
0

1 个回答

从 9.2.0 开始,使用 entityQuery 进行查询时必须明确调用 accessCheck() 声明是否进行权限检查,所以在原代码中加上 accessCheck()accessCheck(FALSE) 就行了。前者表示只查询有权限访问的节点,后者表示不进行权限检查。

// 获取最新的 5 篇文章。
$ids = \Drupal::entityQuery('node')
  ->accessCheck(TRUE)
  ->condition('type', 'article')
  ->orderBy('created', 'DESC')
  ->range(0, 5)
  ->execute();

官方说明:https://www.drupal.org/node/3201242

2
0
登录注册后添加答案