教义中的多对一关系


Many To One relationship in doctrine2

我在理解教义和试图建立一个实体方面有困难。下面的sql语句是否与下面的原则实体

对应?
create table comments (
    id SERIAL PRIMARY KEY,
    message VARCHAR,
    parent_id INTEGER REFERENCES comments(id)
 );

/**
 * @var integer
 *
 * @ORM'Column(name="id", type="integer")
 * @ORM'Id
 * @ORM'GeneratedValue(strategy="AUTO")
 */
private $id;
/**
 * @var integer
 *
 * @ORM'Column(name="parent_id", type="integer")
 * @ORM'OneToMany(targetEntity="Comment", mappedBy="id")
 */
private $parent_id;

您混淆了id和实体定义:在您的示例中,parent_id变量将包含父注释实体而不是id(变量名称所暗示的)。另外,你的关联方式是错误的——在定义父实体时,它应该是ManyToOne(一个父评论对应多个子评论)。

基本上你可以遵循原则关联映射的例子(部分一对多,自引用)——也有从父注释到子注释定义的实体关系作为arrayCollection。如果你不需要子连接,你可以删除相关变量&由父变量注释定义。

如果引用的例子是不够清楚,我可以张贴完整的代码以及(因为我恰好有完全相同的已经做了评论实体)

parent(它是另一个对象,而不是初始化的子对象)可以有多个'子',因此该关系应该是ManyToOne关系。

也看看这里的解决方案:https://stackoverflow.com/a/24002956/1794894