2012-09-04 30 views
0

TagTag表與多對一(多個標籤與一個類別相關,或者一個類別包含多個標籤)與Category表有關係。 。多對一 - Symfony不生成正確的基於ID的關係

我應該從表Tag到表Category獲得正常的多對一關係。它應該基於來自表Category(它被命名爲id_category)的ID。但是,相反,我得到... 表中的VARCHAR(255)列!

下面是標籤實體的部分代碼:

/** 
* @ORM\Column(nullable=true) 
* @ORM\ManyToOne(targetEntity="Category") 
* @ORM\JoinColumn(name="id_category", referencedColumnName="id_category") 
*/ 
protected $category; 

類別實體沒有相應的關聯「標籤」列,因爲它是單向的關係。總之,這裏是如何id_categoryCategory實體被宣佈(雖然我不認爲這是很重要):

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id_category; 

我被Doctrine2的命令update --dump-sql得到的結果如下:

ALTER TABLE Tag ADD category VARCHAR(255) DEFAULT NULL 

主義給我VARCHAR,而不是INTEGER作爲id與外鍵。有誰知道爲什麼?
如何告訴 Symfony在這種情況下作出關係?

+0

websitecategory? –

+0

我的舊名,我編輯過它。任何線索? – forsberg

+0

它與SF2無關,但與Doctrine2相關,因爲該命令屬於'DoctrineORMBundle'。奇怪的是,更新的字段應該被命名爲'id_category',而不是'category' ... – Florent

回答

0

請勿使用@ORM \列,只是@ORM \多對一:

/** 
* @ORM\ManyToOne(targetEntity="Category") 
* @ORM\JoinColumn(name="id_category", referencedColumnName="id_category", nullable=true) 
*/ 
protected $category; 
+0

Thanx Carlos,但是如果我想要有沒有類別的標籤(沒有Id /與類別的關係)?我希望「可空=真」有助於達到這個目的。 – forsberg

+0

已更新的答案。你可以在JoinColumn定義中設置nullable = true –

+0

儘管默認關係在Doctrine中是可以爲空的,所以你並不需要這個。如果你想聲明nullable = false,你會需要它 –