2017-04-20 44 views
0

我有一個表爲每個用戶名存儲一棵樹。 我的實體看起來像這樣如何使用Gedmo嵌套樹在單個表中存儲多棵樹?

/** 
* Confsaves 
* @Gedmo\Tree(type="nested") 
* @ORM\Table(name="confsaves") 
*@ORM\Entity(repositoryClass="Gedmo\Tree\Entity\Repository\NestedTreeRepository") 
*/ 
class Confsaves 
{ 
/** 
* @var string 
* 
* @ORM\Column(name="Name", type="string", length=200, nullable=true) 
*/ 
private $name; 

/** 
* @var string 
* 
* @Gedmo\TreeRoot 
* @ORM\Column(name="Username", type="string", length=50, nullable=true) 
*/ 
private $username; 

/** 
* @Gedmo\TreeParent 
* @ORM\ManyToOne(targetEntity="Confsaves", inversedBy="children") 
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE", nullable=true) 
*/ 
private $parent; 

/** 
* @ORM\OneToMany(targetEntity="Confsaves", mappedBy="parent") 
* @ORM\OrderBy({"lft" = "ASC"}) 
*/ 
private $children; 

/** 
* @var integer 
* 
* @Gedmo\TreeLeft 
* @ORM\Column(name="lft", type="integer", nullable=true) 
*/ 
private $lft; 

/** 
* @var integer 
* 
* @Gedmo\TreeRight 
* @ORM\Column(name="rght", type="integer", nullable=true) 
*/ 
private $rght; 


/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
private $id; 

我想建立一個不同的樹爲每個用戶。

在我CONTROLER我創建這樣的

$em = $this->getDoctrine()->getManager(); 
$repo = $em->getRepository('MyBundle:Confsaves'); 

如何設置存儲庫的範圍只在用戶連接庫? 是否需要構建樹函數?

我使用只有左,右和父參數的現有數據庫。

回答

1

已經過了很長一段時間,但備案:

如果你想爲每個用戶一棵樹,你必須更明確建立您的ConfsavesUser實體之間的關係,你的Confsavesroot財產之間實體和你的User之一。 Doctrine擴展支持您的樹的根屬性since 2.4的關係。確保你使用的是正確的版本。花費我一整天的時間進行調試。

因此,要將您的嵌套樹與用戶實體關聯起來,只需在您的用戶中執行ManyToOne,然後在樹實體中執行反向關係。