我正在研究一个Symfony项目,并尝试从我的BDD中获得一些结果所以我在做的是:
$result1 = $this->createQueryBuilder('p')
->leftJoin('p.payments','payments')
->select('p.id, payments.name')
->getQuery()
->getArrayResult();
return $result1;
在我的实体中,我有:
/**
* @ORMOneToMany(targetEntity="RBOrdersBundleEntityPayment",mappedBy="purchase",cascade={"persist"})
*/
private $payments;
和我的付款实体:
/**
* @ORMManyToOne(targetEntity="RBOrdersBundleEntityPurchase")
* @ORMJoinColumn(nullable=false, onDelete="CASCADE")
*/
private $purchase;
我拥有的内容:购买可以有多次付款。我的要求给我的结果与付款数量一样多。景象:
[
{
"id" : 1
"name" : "name1"
}
{
"id" : 1
"name" : "name2"
}
]
我想要什么:我想要一个带有这样的付款名称的结果:
[
{
"id" : 1
"name": ["name1","name2"]
}
]
您想要的实际上不是"数组结果",您只想使用另一种"水合模式",而不是普通的"水合模式",这需要大量时间。
尝试以下操作:
use DoctrineORMQuery;
...
$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/manual/data-hydrators.html