我在理解教义和试图建立一个实体方面有困难。下面的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