使用 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();
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();