我的正常查询是这样的。
$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');
我补充了为什么它不起作用的评论。
现在我要循环