Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony getArrayResult给出重复的结果_Symfony_Doctrine Orm - Fatal编程技术网

Symfony getArrayResult给出重复的结果

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

我正在做一个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"]
    }
]

你想要的其实不是一个“数组结果”,你只想使用另一个比正常的“水合模式”,这需要很多时间

试试这个:

use Doctrine\ORM\Query;

...

$query = $em->getRepository('YourRepo')
                ->createQueryBuilder('p')
                ->innerJoin('p.payments','payments')
                ->addSelect('payments')
                ->getQuery()
                ->getResult(Query::HYDRATE_ARRAY);
有关文档的更多信息: