2013-04-01 9 views
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") 

但是,爲什麼?在我的生產表中列名可能會更改

+0

不是一個答案,但應該「ManyToOne」在孩子而不是父母? – qooplmao

+0

沒有關係是正確的 – user1070125

+0

我不明白你爲什麼要使用'@ORM \ Column'標籤時可以使用'@ORM \ JoinColumn'請解釋 –

回答

0

看起來像問題是@ORM\Column已添加到$parent的annonation。問題解決了。

相關問題