1
映射的類別表看起來是這樣的:我的自引用實體類有什麼問題?
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的探查我得到以下映射錯誤:
該協會測試\ TestBundle \實體\ Category#的孩子是指沒有定義爲關聯的擁有方字段Test \ TestBundle \ Entity \ Category#parent。
關聯Test \ TestBundle \ Entity \ Category#子代指不存在的擁有方字段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
爲什麼?我的課程基本上只是手冊的複製/粘貼。
編輯:
之後我刪除了列名annonation它的工作原理(名稱默認爲列名反正):
* @ORM\Column(name="parent_id", type="integer")
但是,爲什麼?在我的生產表中列名可能會更改
不是一個答案,但應該「ManyToOne」在孩子而不是父母? – qooplmao
沒有關係是正確的 – user1070125
我不明白你爲什麼要使用'@ORM \ Column'標籤時可以使用'@ORM \ JoinColumn'請解釋 –