Saya memiliki entitas yang terlihat seperti ini:
/**
* @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;
}
dan saya mencoba menjalankan kueri seperti ini:
$qb = $this->em->createQueryBuilder()
->select('c.parent')
->from('Category', 'c');
$result = $qb->getQuery()->getArrayResult();
Namun, saya mendapatkan kesalahan berikut:
[Semantical Error] ... Error: Invalid PathExpression. Must be a StateFieldPathExpression.
Bagaimana cara memilih bidang parent_id dari tabel saya. Saya telah mencoba banyak variasi dan bahkan jika saya melakukan sesuatu seperti ini:
$qb = $this->em->createQueryBuilder()
->select('c')
->from('Category', 'c');
Saya mendapatkan semua bidang di tabel kecuali untuk parent_id. Ini sepertinya Doktrin menghalangi. Bagaimana cara menanyakan bidang parent_id ini? atau lebih baik lagi bagaimana saya bisa mendapatkan semua bidang dalam tabel termasuk parent_id
symfony
doctrine-orm
dql
Mike
sumber
sumber
$query->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);
(Parameter default) tampaknya diganti oleh fungsi identitas.$qb->select('identity(c.parent)')
.Solusi menggunakan createQueryBuilder:
$query->SELECT('pa.id') ->from('Category', 'ca'); $query->join('ca.parent', 'pa'); $result = $query->getQuery()->getArrayResult();
sumber
Anda memilih objek yang tidak bergabung. Seperti yang dikatakan dalam jawaban lain, Anda harus melakukan sesuatu seperti:
qb->innerJoin("c.parent", "p")
sumber