Symfony Gedmo树-无法获取父ID

时间:2018-07-30 15:11:47

标签: php symfony doctrine-orm gedmo-tree

我正在使用Gedmo树对广告进行分类。

当尝试检索类别的父级时,我的查询返回的是根级ID,而不是父级。

为澄清起见,下面的查询将按预期返回所有内容,但对于parent_id(p.parent),它将返回root_id(r.root)。

以下是查询:

public function getRecentAds($em)
{
    $qb = $em->createQueryBuilder();
    return $qb->select('a.id, a.description')
        ->from('App:Ad', 'a')
        ->join('a.user','u')
        ->join('u.address', 'adr')
        ->addSelect('adr.city, adr.postalCode')
        ->join('a.category', 'c')
        ->addSelect('c.title')
        ->join('c.parent', 'p')
        ->addSelect('(p.parent) AS parent_id, (p.title) AS parent_title')
        ->join('c.root', 'r')
        ->addSelect('(r.root) AS root_id, (r.title) AS root_title')
        ->orderBy('a.id', 'DESC')
        ->setMaxResults(10)
        ->getQuery()
        ->getResult()
    ;
}

类别实体的相关部分非常标准,如下所示:

/**
 * @Gedmo\TreeRoot
 * @ORM\ManyToOne(targetEntity="Category")
 * @ORM\JoinColumn(referencedColumnName="id", onDelete="CASCADE")
 */
private $root;

/**
 * @Gedmo\TreeParent
 * @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
 * @ORM\JoinColumn(referencedColumnName="id", onDelete="CASCADE")
 */
private $parent;

在广告/实体上,类别映射为:

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\Category", inversedBy="ads")
 * @ORM\JoinColumn(nullable=false)
 * @Assert\NotBlank(
 *  message = "A category is required."
 * )
 */
private $category;

0 个答案:

没有答案