symfony2 query español consultas array symfony doctrine-orm doctrine

query - symfony doctrine español



"PathExpression no válido. Debe ser una StateFieldPathExpression ”en el generador de consultas con entidades no relacionadas (2)

Me contesto desde que encontré cómo solucionarlo:

$qb->select(''IDENTITY(od.media)'', ''IDENTITY(od.type) AS doc_type'', ''IDENTITY(od.status) AS doc_status'', ''md.url'', ''nms.name'', ''nmt.name'');

Como od.media , od.type , od.status son claves compuestas, entonces necesito agregar IDENTITY para que la consulta funcione y solucione el problema

Tengo cuatro entidades: OfficialDocument , Media , NMediaStatus y NMediaType . Estoy tratando de traducir este SQL:

SELECT od.media, od.type, od.status, md.url, nms.name FROM official_document od LEFT JOIN media md ON od.media = md.id LEFT JOIN n_media_status nms ON od.status = nms.id WHERE od.company = 9

a Doctrine Query Builder y este es el resultado:

public function findOfficialDocument($company_id) { $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select(''od.media'', ''od.type'', ''od.status'', ''md.url'', ''nms.name'', ''nmt.name''); $qb->from(''Company/RegisterCompanyBundle/Entity/OfficialDocument'', ''od''); $qb->leftJoin(''Common/MediaBundle/Entity/Media'', ''md'', /Doctrine/ORM/Query/Expr/Join::WITH, ''od.media = md.id''); $qb->leftJoin(''Common/MediaBundle/Entity/NMediaStatus'', ''nms'', /Doctrine/ORM/Query/Expr/Join::WITH, ''od.status = nms.id''); $qb->leftJoin(''Common/MediaBundle/Entity/NMediaType'', ''nmt'', /Doctrine/ORM/Query/Expr/Join::WITH, ''od.type = nmt.id''); $qb->where(''od.company = ?1''); $qb->setParameter(1, $company_id); return $qb->getQuery()->getResult(); }

Pero cada vez que llamo a la función desde mi controlador me sale este error:

[Error semántico] línea 0, columna 10 cerca de ''media, od.type'': Error: PathExpression no válido. Debe ser un StateFieldPathExpression.

[1/2] QueryException: SELECT od.media, od.type, od.status, md.url, nms.name, nmt.name DE la compañía / RegisterCompanyBundle / Entity / OfficialDocument od LEFT JOIN Common / MediaBundle / Entity / Media md WITH od.media = md.id LEFT JOIN Common / MediaBundle / Entity / NMediaStatus nms WITH od.status = nms.id LEFT JOIN Common / MediaBundle / Entity / NMediaType nmt WITH od.type = nmt.id WHERE od.company =? 1

OfficialDocument está relacionado con las otras tres entidades, pero dado que no necesito la reversedBy En esas entidades, es difícil que esto esté causando el error, o tal vez no, no estoy seguro. De todos modos, ¿algún consejo o ayuda para solucionar este problema?

PD: Estoy usando la última versión de Symfony2 y Doctrine2 si necesitas echar un vistazo a mis entidades, aquí están: OfficialDocument , Media , NMediaStatus , NMediaType


Simplemente puedes usar () donde existen claves compuestas.

$qb->select(''(od.media)'', ''(od.type) AS doc_type'', ''(od.status) AS doc_status'', ''md.url'', ''nms.name'', ''nmt.name'');