得到用户的父母

时间:2014-09-26 14:15:32

标签: symfony orm doctrine-orm

我想知道,如果我们假设用户之间存在反身关系,那么是否有可能获得用户及其所有父母,每个用户都有父用户和孩子。

这是我的用户实体类。

<?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;

    // ...
}

2 个答案:

答案 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