Lau*_*eld 5 pagination doctrine-orm zend-framework2
我遇到了Doctrine Paginator的问题.
在我的存储库中,我有一个检索特定数据集的函数.我使用querybuilder:
{myEntityRepository}->createQueryBuilder($alias)
Run Code Online (Sandbox Code Playgroud)
为了只选择特定字段,我使用以下内容:
if (count($selectFields) > 0) {
$qb->resetDQLPart('select');
foreach ($selectFields as $selectField) {
$qb->addSelect($alias . '.' . $selectField);
}
}
Run Code Online (Sandbox Code Playgroud)
当我像这样检索整个集合时,这很好用:
$query = $qb->getQuery();
$data = $query->getResult(AbstractQuery::HYDRATE_ARRAY);
Run Code Online (Sandbox Code Playgroud)
但是当我使用paginator时失败了:
$paginator = new Paginator($qb, $fetchJoinCollection = false);
$total = $paginator->count(),
$data = $paginator->getQuery()->getResult(AbstractQuery::HYDRATE_ARRAY)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
并非所有标识符属性都可以在ResultSetMapping中找到:relationID
\ vendor\doctrine\orm\lib\Doctrine\ORM\Query\Exec\SingleSelectExecutor.php(38)
问题:当我只选择特定字段时,为什么分页器会失败?
我忽略了什么吗?或者我一起做错了吗?
Mat*_*hew -1
Doctrine 正在尝试使用一个不存在的字段来水化 YAML 文件概述的关系,因为您已将其从SELECT语句中排除。查看您的映射文件以找出需要重新添加的内容。
我认为这只是对分页器的抱怨,因为当您不使用分页器时,该字段不会被访问(因此不会被延迟加载)。
顺便说一句(对你的堆栈的了解为零,所以 YMMV)我会避免养成SELECT减少结果集的习惯,因为你会发现自己一直遇到这样的奇怪问题。如果您确实需要额外的性能,那么最好放置一个好的旧缓存层......
| 归档时间: |
|
| 查看次数: |
1853 次 |
| 最近记录: |