映射的类别表如下所示:
id | parent_id | name
和实体类:
class Category
{
/**
* @ORM\Id
*/
protected $id;
/**
* @ORM\Column(name="parent_id", type="integer") <-- if removed it works
* @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
protected $parent;
/**
* @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
*/
protected $children;
/**
* @ORM\Column(name="name", type="string")
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="Product", mappedBy="category")
*/
protected $products;
public function __construct()
{
$this->products = new ArrayCollection();
$this->children = new ArrayCollection();
}
}
在 Symfony 分析器中,我得到以下映射错误:
关联 Test\TestBundle\Entity\Category#children 是指未定义为关联的拥有方字段 Test\TestBundle\Entity\Category#parent。
关联 Test\TestBundle\Entity\Category#children 是指不存在的拥有方字段 Test\TestBundle\Entity\Category#parent。
还有一个错误通知:
Notice: Undefined index: parent in C:\inetpub\www\Symfony\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\BasicEntityPersister.php line 1575
为什么?我的课基本上只是手册的复制/粘贴。
编辑:
在我删除列名注释后,它可以工作(无论如何,名称默认为列名):
* @ORM\Column(name="parent_id", type="integer")
但为什么?在我的生产表中,列名可能会改变