我试图让自引用实体在每次获取一个对象的子对象时停止查询数据库,并在一次查询中获取整个树。
这是我的实体:
/**
* @ORM\Entity(repositoryClass="ExampleRep")
* @ORM\Table(name="example_table")
*/
class Example {
/**
* @ORM\Id
* @ORM\Column(type="integer", nullable=false);
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Example", inversedBy="children")
* @ORM\JoinColumn(name="parent", referencedColumnName="id", onDelete="SET NULL")
*/
private $parent = null;
/**
* @ORM\OneToMany(targetEntity="Example", mappedBy="parent")
*/
private $children;
}
我正在使用 queryBuilder 调用我的日期,例如:
$query = $this->createQueryBuilder('e');
$query->orderBy('e.parent', 'ASC');
$example_data = $query->getQuery()->getResult();
当我循环我的 example_data 并调用 getChildren 时,会进行另一个查询,即使在查询中已经调用了同一个对象。
我在这里遵循了这个例子:Doctrine - self-reference entity - disable fetching of children但是当我这样做时,我的 getChildren 什么也不返回。
有没有办法获取我的数据而不会因多个请求而使数据库过载?