Php 一对一、自我参照、双向关系
我正在尝试创建一个一对一、自参考、双向关系(wow),其中包含一个实体,Php 一对一、自我参照、双向关系,php,doctrine,Php,Doctrine,我正在尝试创建一个一对一、自参考、双向关系(wow),其中包含一个实体,Revision,如下所示: /** *@Entity() *@Table(name=“rev”) */ 类修订扩展了BaseEntity { /** *@Id *@Column(type=“integer”) *@GeneratedValue */ 受保护的$id; /** *@Column(type=“string”) */ 受保护的评论; /** *@OneToOne(targetEntity=“Revision”,i
Revision
,如下所示:
/**
*@Entity()
*@Table(name=“rev”)
*/
类修订扩展了BaseEntity
{
/**
*@Id
*@Column(type=“integer”)
*@GeneratedValue
*/
受保护的$id;
/**
*@Column(type=“string”)
*/
受保护的评论;
/**
*@OneToOne(targetEntity=“Revision”,inversedBy=“parent”)
*@JoinColumn(name=“修订版”,referencedColumnName=“id”)
*/
受保护的美元修订;
/**
*@OneToOne(targetEntity=“Revision”,mappedBy=“revisionOf”)
*/
受保护的$父母;
}
如果没有parent
属性,一切正常。当我添加该属性时,两个关系都返回null
眼前的问题是:我试图做的事能在教义上实现吗?如果是这样的话,我该怎么做呢?当你有双向关系时,你必须管理好双方 在这种情况下
$revision->setRevisionOf($revisionOf);
$revisionOf->setParent($revision);
回答我自己的问题:这是不可能的。正如BKSday所说,您需要两个列来完成此行为
不幸的是,这需要一些重复数据。我用这个解决了这个问题
oneToOne:
previous:
targetEntity: Change
mappedBy: next
joinColumn:
name: id
referencedColumnName: next_id
next:
targetEntity: Change
inversedBy: previous
你找到解决办法了吗?我想做同样的事情,但我用两个一个一个的自引用分离了关系,我仍然会遇到问题。没关系,我有一个打字错误,如果我在两个不同的列上用相同的referencedColumnName做两个单独的单向关系,它会起作用,但我仍然想知道这个问题的双向性。这个问题在将来可能会有用
oneToOne:
previous:
targetEntity: Change
mappedBy: next
joinColumn:
name: id
referencedColumnName: next_id
next:
targetEntity: Change
inversedBy: previous