我正在研究Symfony项目并试图从我的BDD获得一些结果 所以我正在做的是:
$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"]
}
]
答案 0 :(得分:1)
你想要的实际上并不是一个"数组结果",你只想使用另一种"水合模式"比正常的,需要花费很多时间。
试试这个:
use Doctrine\ORM\Query;
...
$query = $em->getRepository('YourRepo')
->createQueryBuilder('p')
->innerJoin('p.payments','payments')
->addSelect('payments')
->getQuery()
->getResult(Query::HYDRATE_ARRAY);
有关文档的更多信息:
http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/data-hydrators.html