我在Symfony2上的Sonata Admin遇到了一些麻烦,我有一个包含许多过滤器的用户列表,但其中一个使用'doctrine_orm_callback'
'callback' => function (QueryBuilder $queryBuilder, $alias, $field, $value) {
if($value['value'] === null)
return;
$queryBuilder->leftJoin($alias.'.ad', 'a');
$queryBuilder->groupBy('a.id');
$queryBuilder->orderBy('a.id', $value['value']);
$queryBuilder->setMaxResults(1);
return;
},
当我没有结果时,我有这个例外'虽然预计至少有一行,但没有找到查询结果。'
怎么能告诉Sonata一个函数'getOneOrNullResult'呢?
答案 0 :(得分:0)
好吧,我真的很脏,但确实有效。
'callback' => function (QueryBuilder $queryBuilder, $alias, $field, $value) {
if($value['value'] === null)
return;
$qb = clone $queryBuilder;
$results = $qb
->setMaxResults(1)
->getQuery()
->getResult()
;
if(count($results) > 0) {
$queryBuilder->leftJoin($alias.'.ad', 'a');
$queryBuilder->groupBy('a.id');
$queryBuilder->orderBy('a.id', $value['value']);
$queryBuilder->setMaxResults(1);
}
return;
},