Como puedo agregar a una query realizada con un createQueryBuilder o createQuery, una función de postgres ('array_to_string')?
He intentado de las siguientes formas.
Con createQueryBuilder :
Código PHP:
$qb = $this->createQueryBuilder('ser');
$expr = $qb->expr();
$subQuery = 'array_to_string(
ARRAY(
SELECT subAtt.att_description
FROM ModulesConfigBundle:Attribute subAtt
WHERE subAtt.attLeft < att.attLeft
AND subAtt.attRight > att.attRight
),
"/"
)';
$qb->select('pro.proNumericCode, pro.proAlphanumericCode, pro.proDescription, cub.cubId, cub.cubDescription,att.attDescription, ' . $expr->some($subQuery))
->join('ser.proNumericCode', 'pro')
->join('ser.cub','cub')
->join('cub.att','att')
->where('att.attLeft >= :attLeft')
->andWhere('att.attRight <= :attRight')
->setParameter('attLeft', $attLeft)
->setParameter('attRight', $attRight);
$query = $qb->getQuery();
//Me tira un Error: Expected known function 'SOME'
Y con CreateQuery :
Código PHP:
$sql = 'SELECT pro.proNumericCode, pro.proAlphanumericCode, pro.proDescription, cub.cubId, cub.cubDescription,att.attDescription,
array_to_string(
ARRAY(
SELECT subAtt.att_description
FROM ModulesConfigBundle:Attribute subAtt
WHERE subAtt.attLeft < att.attLeft
AND subAtt.attRight > att.attRight
),
"/"
)
FROM ModulesWarehouseBundle:Series ser
JOIN ser.proNumericCode pro
JOIN ser.cub cub
JOIN cub.att att
WHERE att.attLeft >= ' . $attLeft . '
AND att.attRight <= ' . $attRight;
$cq = $em->createQuery($sql);
$cq->getQuery();
//Me dice Error: Expected known function, got 'array_to_string'
Si encuentro la solución la posteo :)
Saludos.