Symfony 学说自我参考

Symfony doctrine self reference

是否可以在实体中使用自引用字段?像这样:

class Dir
{
   /**
    * @ORM\Id
    * @ORM\Column(type="integer")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
   protected $id;

   /**
    * @ORM\Column(type="integer")
    */
   protected $parent; // reference to other Dir
}

普通关联和自引用没有区别

以下可能有效:

class Dir
{
   /**
    * @ORM\Id
    * @ORM\Column(type="integer")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
   private $id;

   /**
    * @ORM\ManyToOne(targetEntity="Dir")
    */
   private $parent;
}

阅读 Doctrine here 中有关协会的更多信息。

如果您不打算从您的实体继承,您还应该使用 private 属性。