一个表中的关系

时间:2013-07-15 11:07:46

标签: symfony doctrine-orm

我有简单的公司表与关系:

id    name        parentId
1     Company1    0
2     Company2    1
3     Company3    1 
4     Company4    3

如何编写与此表中的条目相关的Doctrine注释?

1 个答案:

答案 0 :(得分:5)

似乎您的实体只是公司,每个公司都有一个名称,并且与另一家公司有很多关系。

您的公司实体应如下所示:

/**
 * Company
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Company {
    /**
     * @var integer
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(name="name", type="string", length=100)
     */
    protected $name;

    /**
     * @ORM\ManyToOne(targetEntity="Company")
     * @ORM\JoinColumn(name="parentId", referencedColumnName="id")
     */
    protected $parent;
}

对于基类,您应该考虑使用php app/console doctrine:generate:entity来完成所有工作。您只需手动添加父关系。

你应该看一下Symfony关于这个主题的书:http://symfony.com/doc/current/book/doctrine.html

所有关联映射配置都在Doctrine的文档中解释:http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html