Ich habe eine Entität, die so aussieht:
/**
* @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;
}
und ich versuche eine Abfrage wie folgt auszuführen:
$qb = $this->em->createQueryBuilder()
->select('c.parent')
->from('Category', 'c');
$result = $qb->getQuery()->getArrayResult();
Ich erhalte jedoch den folgenden Fehler:
[Semantical Error] ... Error: Invalid PathExpression. Must be a StateFieldPathExpression.
Wie kann ich das Feld parent_id aus meiner Tabelle auswählen? Ich habe eine Reihe von Variationen ausprobiert und selbst wenn ich so etwas mache:
$qb = $this->em->createQueryBuilder()
->select('c')
->from('Category', 'c');
Ich bekomme alle Felder in der Tabelle außer der parent_id. Dies scheint, als würde die Lehre im Weg stehen. Wie kann ich nach diesem Feld parent_id fragen? oder noch besser, wie kann ich alle Felder in der Tabelle einschließlich der parent_id erhalten
symfony
doctrine-orm
dql
Mike
quelle
quelle
$query->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);
(Der Standardparameter) wird anscheinend von der Identitätsfunktion überschrieben.$qb->select('identity(c.parent)')
.Lösung mit createQueryBuilder:
quelle
Sie wählen ein Objekt aus, das nicht verbunden ist. Wie in einer anderen Antwort gesagt, müssen Sie etwas tun wie:
quelle