Symfony getArrayResult给出重复的结果
我正在做一个Symfony项目,并试图从我的BDD中得到一些结果 所以我要做的是:Symfony getArrayResult给出重复的结果,symfony,doctrine-orm,Symfony,Doctrine Orm,我正在做一个Symfony项目,并试图从我的BDD中得到一些结果 所以我要做的是: $result1 = $this->createQueryBuilder('p') ->leftJoin('p.payments','payments') ->select('p.id, payments.name') ->getQuery() ->getArrayResult(); return $result1; 在我的实体中,我有: /** * @ORM\OneToMan
$result1 = $this->createQueryBuilder('p')
->leftJoin('p.payments','payments')
->select('p.id, payments.name')
->getQuery()
->getArrayResult();
return $result1;
在我的实体中,我有:
/**
* @ORM\OneToMany(targetEntity="RB\OrdersBundle\Entity\Payment",mappedBy="purchase",cascade={"persist"})
*/
private $payments;
在我的支付实体中:
/**
* @ORM\ManyToOne(targetEntity="RB\OrdersBundle\Entity\Purchase")
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
*/
private $purchase;
我所拥有的:
一次购买可以有多次付款。我的请求给了我和付款数量一样多的结果。例如:
[
{
"id" : 1
"name" : "name1"
}
{
"id" : 1
"name" : "name2"
}
]
我想要什么:
我想要一个带有付款名称数组的单一结果,如下所示:
[
{
"id" : 1
"name": ["name1","name2"]
}
]
你想要的其实不是一个“数组结果”,你只想使用另一个比正常的“水合模式”,这需要很多时间 试试这个:
use Doctrine\ORM\Query;
...
$query = $em->getRepository('YourRepo')
->createQueryBuilder('p')
->innerJoin('p.payments','payments')
->addSelect('payments')
->getQuery()
->getResult(Query::HYDRATE_ARRAY);
有关文档的更多信息: