symfony2 querybuilder query inner generate consultas symfony doctrine2 dql

querybuilder - symfony 3.4 doctrine query



Symfony2 y Doctrine-Error: PathExpression no vĂ¡lido. Debe ser StateFieldPathExpression (3)

Está seleccionando un objeto que no está unido. Como se dijo en otra respuesta, tienes que hacer algo como:

qb->innerJoin("c.parent", "p")

Tengo una entidad que se ve así:

/** * @Gedmo/Tree(type="nested") * @ORM/Table(name="categories") * @ORM/Entity() */ class Category extends BaseCategory { /** * @ORM/OneToMany(targetEntity="Category", mappedBy="parent") */ protected $children; /** * @Gedmo/TreeParent * @ORM/ManyToOne(targetEntity="Category", inversedBy="children") * @ORM/JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL") */ protected $parent; }

y estoy tratando de ejecutar una consulta como esta:

$qb = $this->em->createQueryBuilder() ->select(''c.parent'') ->from(''Category'', ''c''); $result = $qb->getQuery()->getArrayResult();

Sin embargo, recibo el siguiente error:

[Semantical Error] ... Error: Invalid PathExpression. Must be a StateFieldPathExpression.

¿Cómo puedo seleccionar el campo parent_id de mi tabla? He intentado un montón de variaciones e incluso si hago algo como esto:

$qb = $this->em->createQueryBuilder() ->select(''c'') ->from(''Category'', ''c'');

Obtengo todos los campos en la tabla a excepción del parent_id. Parece que Doctrina se interpone en el camino. ¿Cómo puedo consultar este campo parent_id? o mejor aún ¿cómo puedo obtener todos los campos en la tabla incluyendo el parent_id


Puede usar la función IDENTITY actualmente no documentada para seleccionar los ID de FK en una consulta:

SELECT IDENTITY(c.parent) ...


Solución usando createQueryBuilder:

$query->SELECT(''pa.id'') ->from(''Category'', ''ca''); $query->join(''ca.parent'', ''pa''); $result = $query->getQuery()->getArrayResult();