如果我在select子句中使用不同实体的不同字段,我怎么能得到Query :: HYDRATE_OBJECT

时间:2015-03-20 12:14:39

标签: symfony doctrine-orm symfony-2.1 symfony-forms symfony-2.3

$query = $this->createQueryBuilder('C')
            ->select('C.id, C.name, P.id, P.name')
            ->leftJoin('C.Product', 'P')
            ->getQuery()
            ->getResult();

以上查询返回HYDRATE_ARRAY,我想要HYDRATE_OBJECT。

3 个答案:

答案 0 :(得分:1)

$query = $this->createQueryBuilder('C')
            ->select('partial C.{id, name}, partial P.{id, name}')
            ->leftJoin('C.Product', 'P')
            ->getQuery()
            ->getResult();

你可以得到结果

foreach($query as $q) {
   echo $q->getId().' -- '.$q->getProduct()->getId();
}

答案 1 :(得分:0)

如果你想使用任何mysql函数,比如group_concat和get ids

$query = $this->createQueryBuilder('C')
            ->select('C, GROUP_CONCAT(C.id) AS ids, partial P.{id, name}')
            ->leftJoin('C.Product', 'P')
            ->getQuery()
            ->getResult();

foreach($query as $q) {
   echo $q[0]->getId().' -- '.$q[0]->getProduct()->getId().' -- '.$q['ids'];
}

在这里,您可以获得类别表的所有字段,类别表的组ID和提交的产品表

由于

Ashok Chitroda

答案 2 :(得分:0)

你可以做到。

/**
 * return all devices enabled to array
 *
 * @return array
 */
private function getAllDevicesToArray()
{
    // return to array not object
    return $this->getDoctrine()
        ->getRepository('AdminBundle:Device')
        ->createQueryBuilder('d')
        ->where('d.enabled = :enabled')
        ->setParameter('enabled', 1)
        ->getQuery()
        ->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
}