getArrayResult给出重复的结果

时间:2017-06-28 07:36:15

标签: symfony doctrine-orm

我正在研究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"]
    }
]

1 个答案:

答案 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