如果我在 select 子句中使用来自不同实体的不同字段,我怎样才能得到 Query::HYDRATE_OBJECT
How can I get Query::HYDRATE_OBJECT as a result, if I use different fields from different entities in a select clause
$query = $this->createQueryBuilder('C')
->select('C.id, C.name, P.id, P.name')
->leftJoin('C.Product', 'P')
->getQuery()
->getResult();
以上查询 returns HYDRATE_ARRAY,我想要 HYDRATE_OBJECT.
$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();
}
如果您想使用任何 mysql 函数,例如 group_concat 并获取 ID
$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'];
}
在这里您可以获取类别 table 的所有字段、类别 table 的组 ID 和产品 table 字段
谢谢
阿肖克·奇特罗达
你可以的。
/**
* 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);
}
$query = $this->createQueryBuilder('C')
->select('C.id, C.name, P.id, P.name')
->leftJoin('C.Product', 'P')
->getQuery()
->getResult();
以上查询 returns HYDRATE_ARRAY,我想要 HYDRATE_OBJECT.
$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();
}
如果您想使用任何 mysql 函数,例如 group_concat 并获取 ID
$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'];
}
在这里您可以获取类别 table 的所有字段、类别 table 的组 ID 和产品 table 字段
谢谢
阿肖克·奇特罗达
你可以的。
/**
* 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);
}