簡體   English   中英

Doctrine 2遞歸查詢構建器

[英]Doctrine 2 recursive query builder

我正在使用“教義2”從實體獲取父母。 我有下一個實體模型:

<?php

namespace Core\Base\Model\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="modules", options={"comment" = "modules installed"});
 */
class Module
{

    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=150, options={"comment" = "module\'s name"}) 
     */
    private $name;

    /**
     * @ORM\Column(type="string", length=1500, options={"comment" = "module\'s   description"}) 
     */
    private $description;

    /**
     * @ORM\OneToMany(targetEntity="Core\Base\Model\Entity\Module", mappedBy="parentModule")
     */
    private $subModules;

    /**
     * @ORM\ManyToOne(targetEntity="Core\Base\Model\Entity\Module", inversedBy="subModules")
     * @ORM\JoinColumn(name="module_parent_id", referencedColumnName="id")
     */
    private $parentModule;

    public function __construct()
    {
        $this->subModules = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
     * @return int Module's id
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return String Module's name
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @return String Module's description
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * @return \Doctrine\Common\Collections\ArrayCollection
     */
    public function getSubModules()
    {
        return $this->subModules;
    }

    /**
     * @param int $id Module's identificator
     * @return void
     */
    public function setId($id)
    {
        $this->id = $id;
    }

    /**
     * @param String $name Modul'es name
     * @return void
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    /**
     * @param String $description Module's description
     * @return void
     */
    public function setDescription($description)
    {
        $this->description = $description;
    }

    /**
     * @param \Core\Module $module
     */
    public function addSubModule($module)
    {
        $this->subModules->add($module);
    }

    /**
     * @param \Core\Module $module
     */
    public function addParentModule($module)
    {
        $this->parentModule = $module;
    }
}

我只想得到所有的父母。 換句話說,來自parentModule的所有模塊均為空。 我怎樣才能做到這一點?

我有這個查詢:

$dql = $this->entityManager->createQueryBuilder()
                ->select('m')
                ->from('\Core\Base\Model\Entity\Module', 'm');

        return $this->getArrayResult($dql);
$qb = $this->entityManager->createQueryBuilder();

$qb
    ->select('m')
    ->from('\Core\Base\Model\Entity\Module', 'm')
    ->where(
        $qb->expr()->isNull('m.parentModule')
    );

return $this->getQuery->getResult();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM