Php 将queryBuilder结果转换为关联数组
我在寻找一种方法,如何将查询生成器结果转换为关联数组。但我需要的是包含来自另一个表的关系数据。 如果我使用getArrayResult()方法,它会给我一个数组,但没有外键。我需要外键包括嵌套数组和关联数据库表的数据。 编辑: 这是我的密码:Php 将queryBuilder结果转换为关联数组,php,symfony,doctrine-orm,query-builder,Php,Symfony,Doctrine Orm,Query Builder,我在寻找一种方法,如何将查询生成器结果转换为关联数组。但我需要的是包含来自另一个表的关系数据。 如果我使用getArrayResult()方法,它会给我一个数组,但没有外键。我需要外键包括嵌套数组和关联数据库表的数据。 编辑: 这是我的密码: $qb = $this->_em->createQueryBuilder(); $qb->select('p'); $qb->from('XXX\MyBundle\Entity\Entity1', 'p'); $qb->le
$qb = $this->_em->createQueryBuilder();
$qb->select('p');
$qb->from('XXX\MyBundle\Entity\Entity1', 'p');
$qb->leftJoin('p.FK1','u');
$qb->andWhere('u.Attr1 = :attr1');
$qb->setParameter('attr1', $appId);
$qb->andWhere('u.Attr2 IS NULL');
$qb->leftJoin('u.FK2', 'v');
$qb->andWhere('v.Attr3 = :attr3');
$qb->andWhere('v.Attr4 IS NULL');
$qb->setParameter('attr3', $userId);
$result = $qb->getQuery()->getArrayResult();
我需要这种转换是因为肥皂。它无法将复杂对象作为实体的嵌套对象返回。首先,您需要在Entity1Repository.php中编写此函数 由于您使用的是createQueryBuilder()方法,因此不需要使用select和from方法。 在您的示例中,您正在编写连接,但没有要求查询返回这些连接 请尝试以下代码:
<?php
namespace XXX\\MyBundle\Entity;
use Doctrine\ORM\EntityRepository;
class Entity1Repository extends EntityRepository
{
public function getEntityWithJoins()
{
return $this
->createQueryBuilder('p')
->addSelect('u')
->addSelect('v')
->leftJoin('p.FK1','u')
->andWhere('u.Attr1 = :attr1')
->setParameter('attr1', $appId)
->andWhere('u.Attr2 IS NULL')
->leftJoin('u.FK2', 'v')
->andWhere('v.Attr3 = :attr3')
->andWhere('v.Attr4 IS NULL')
->setParameter('attr3', $userId);
->getQuery()
->getArrayResult();
}
}
请出示您的申请代码好吗?我编辑了我的问题。非常感谢。但下一个问题是,它只返回一个外键的嵌套数组,但在一个表中有两个FKs,而在数组中第二个FKt;我得到了它。。。我必须为表中的第二个FK再创建一个leftJoin,但我不知道如何创建。只需添加leftJoin和addSelect。。。有什么问题吗?