我想知道,如果我们假设用户之间存在反身关系,那么是否有可能获得用户及其所有父母,每个用户都有父用户和孩子。
这是我的用户实体类。
<?php
namespace Lab\DemoBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity(repositoryClass="Lab\DemoBundle\Repository\UserRepository")
* @ORM\Table(name="users")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @OneToOne(targetEntity="User")
* @JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
/**
* OneToMany(targetEntity="User", inversedBy="parent")
* @JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $childrens;
// ...
}
答案 0 :(得分:1)
我不明白为什么不
public function hasParent()
{
return $this->parent !== null;
}
public function getAncestry()
{
$ancestors = array();
$member = $this;
while ($member->hasParent())
{
$member = $member->getParent();
$ancestors[] = $member;
}
return $ancestors;
}
答案 1 :(得分:0)
我同意xurshid29
,你应该看一下允许你与父母和孩子打交道的Tree Doctrine Extension。