Doctrine ResultSetMapping(Builder)未显示任何结果



我的正常查询是这样的。

$qb = $placeRepository->createQueryBuilder('p');
var_dump($qb->getQuery()->getResult());

我将很少得到作为对象的结果。所以这是正常的行为。

然后我想添加一个带有ResultSetMapping的自定义字段。

$qb = $placeRepository->createQueryBuilder('p');
$qb->addSelect('123 as distance');
$rsm = new ResultSetMapping;
$rsm->addEntityResult(Place::class, 'p');
$rsm->addFieldResult('p', 'id', 'id');
$rsm->addScalarResult('distance', 'distance');
var_dump($qb->getQuery()->setResultSetMapping($rsm)->getResult());

对于ResultSetMappingBuilder,它也不起作用。

$qb = $placeRepository->createQueryBuilder('p');
$qb->addSelect('123 as distance');
$rsm = $placeRepository->createResultSetMappingBuilder('p');
var_dump($qb->getQuery()->setResultSetMapping($rsm)->getResult());

不工作表示:数组中没有项目。

Ok找到了。但不能像我想要的那样工作

/** @var DoctrineORMEntityManager $em */
$em = $this->getDoctrine()->getManager();
// Working but bad because defining all by yourself
$rsm = new ResultSetMapping();
$rsm->addEntityResult(Place::class, 'p');
$rsm->addFieldResult('p','p_id','id');
// Good
$rsmB = new ResultSetMappingBuilder($em);
$rsmB->addRootEntityFromClassMetadata(Place::class, 'p');
// Not working because separate field
//$rsmB->addScalarResult('distance', 'distance');
// Not working because not found ... (not a @ORMColumn)
$rsmB->addFieldResult('p', 'distance', 'distance');

我补充了为什么它不起作用的评论。

现在我要循环

最新更新