使用ZF和Doctrine。我有一张桌子'页'。我想拥有它,以便某些页面可以有与之关联的子页面。子页面还应该引用它们(唯一的)父页面。
我知道我可以在2个实体(页面/子页面)之间进行拆分,但我知道可以使用一个实体,但无法弄清楚如何使关系有效。
我调查它的方式是第二个表是映射表(page_id,parent_page_id)。
我在我的实体中使用注释引用,这是我到目前为止所做的事情,在深夜的紧缩中,任何帮助都会受到赞赏。
/**
* @OneToMany(targetEntity="Page", mappedBy="parentPage")
*/
private $subPages;
/**
* @ManyToOne(targetEntity="Page", inversedBy="subPages")
*/
private $parentPage;
答案 0 :(得分:0)
此问题的答案在教义文档中的一对多自引用下:
这里是一个例子:
class Pages{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* one page have several referred pages
* @var Collection
* @ORM\OneToMany(targetEntity="Pages", mappedBy="parentPage")
*/
private $subPages;
/**
* many referred pages have one referral page
* @ORM\ManyToOne(targetEntity="Pages", inversedBy="subPages")
* @ORM\JoinColumn(name="parent_page", referencedColumnName="id")
*/
private $parentPage;
private $referredBy;
public function __construct()
{
$this->subPages = new Doctrine\Common\Collections\ArrayCollection();
}
}