所以我試圖設置一個系統,其中多個表的行可以處於許多狀態之一,可以直接在表中直接查看,而無需查找表。所以我使用的教條和我有一個ManyToOne關係正常工作當我使用referencedColumnName =「id」。在一個索引但不是另一個索引上工作的主義外鍵?
/**
* @ORM\ManyToOne(targetEntity="DataBundle\State", cascade={"persist"})
* @ORM\JoinColumn(name="State", referencedColumnName="id")
*/
protected $State;
然而,一旦更改referencedColumnName至名(其實我想要的值),這不工作,我得到「一般錯誤:1215無法添加外鍵約束」
/**
* @ORM\ManyToOne(targetEntity="DataBundle\State", cascade={"persist"})
* @ORM\JoinColumn(name="State", referencedColumnName="name")
*/
protected $State;
我的目標是有任何表我把它放在一個列狀態,在我的狀態之一,狀態名稱可見。現在它工作,外鍵得到設置,但它只顯示ID,一旦我改變名字我得到錯誤。爲了清楚起見,我的狀態表有2列,id和名稱一個是int,另一個是varchar255.
我讀過這可能是因爲不同的數據庫引擎或不同的數據類型。所有引擎類型都是相同的,我沒有在任何地方定義$ State列的類型,它是從教義繼承的。有任何想法嗎?
Look [here](http://stackoverflow.com/questions/8919910/is-it-possible-to-reference-a-column-other-than-id-for-a-joincolumn) – ciurciurek
將其作爲評論,我會接受它。謝謝! – CMOS