我想将此表中的一条记录存储在"parent"字段中。产生的错误如下
从MODL119''Entity''Role到MODL119''Identity''Role的关系引用的列名"id"不存在
以及产生错误的PHP实体类
<?php
namespace MODL119'Entity;
use Doctrine'ORM'Mapping as ORM;
/** @ORM'Entity @ORM'Table(name="role")
*/
class Role
{
/** @ORM'Id
* @ORM'Column(name="role_id", type="bigint")
* @ORM'GeneratedValue(strategy="AUTO")
*/
protected $roleId;
/** @ORM'ManyToOne(targetEntity="MODL119'Entity'Role")
* @ORM'JoinColumn(name="role_id", referencedColumnName="role_id")
*/
protected $parent;
public function setParent(Role $parent)
{
$this->parent = $parent;
}
public function getParent()
{
return $this->parent;
}
public function setRoleId($roleId)
{
$this->roleId = $roleId;
}
public function getRoleId()
{
return $this->roleId;
}
}
有什么想法吗?
属性Role::$parent
需要在基础表中表示为外键引用,因此您需要修改注释并更改JoinColumn.name
,如下所示:
/**
* @ORM'ManyToOne(targetEntity="MODL119'Entity'Role")
* @ORM'JoinColumn(name="parent_id", referencedColumnName="role_id")
*/
protected $parent;
这将在实体中建立一个一对一的自引用关联,并在基础表中创建一个parent_id
列。
另请参阅:
- 一对多自参考关联
- 多对多自参照关联
希望这有帮助:)