[英]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.