2011-06-07 104 views
6

我被告知要完成將$ belongsTo映射到非主鍵,我將foreignKey設置爲false,並設置另一個論壇上的某個人(實際上是IRC)的條件, 。但是,我認爲我沒有正確地做到這一點。下面是我的$屬於關聯的代碼,我是想:

var $belongsTo = array(

    'Inventory' => array(
     'className' => 'Inventory', 
     'foreignKey' => false, 
     'conditions' => array('RentalLineitem.i_num' => 'Inventory.i_num'), 
     'dependent' => false 
    ) 

); 

當我看着那就是BEING生成的SQL查詢,在JOIN ON子句正在尋找的字符串值而不是列:`RentalLineitem`.` i_num` ='Inventory.i_num',而不是我需要的是`RentalLineitem`.`i_num` =`Inventory`.`i_num`。

我被告知要將「只更改數據庫模式」更改爲正確。但是,這是一個遺留應用程序,數據庫已經存在了10年,還有其他應用程序正在使用此數據庫。我必須使用我擁有的表格,而且我無法更改模式。

如何正確地關聯這些模型?

+0

是的,這似乎是不正確的。只是所以我不會在我的答案中提出任何假設,您是否試圖將庫存模型與RentalLineItem模型關聯起來?我假設你試圖說庫存屬於'RentalLineItem'? – generalopinion 2011-06-07 16:37:57

回答

11

嗯,這可能不是正確的做法,但我已經有一些類似的問題,我糾正它做類似:

'conditions' => array(' `RentalLineitem`.`i_num` = `Inventory`.`i_num`'), 

希望這有助於

好運

+0

真棒,它工作得很好。感謝您的答覆。我一直在爲此苦苦掙扎,IRC上的人們剛剛對我無法控制的SQL架構抨擊。人們應該明白,有時作爲開發人員,我們無法控制應用程序的組成部分。 – stephenbayer 2011-06-07 16:45:37

+2

我想知道爲什麼這不起作用在cakephp 2.2 ..? – neobie 2012-10-06 06:16:53

0

你只需編輯如下條件:

'conditions' => array(
    'RentalLineitem.i_num = Inventory.i_num', 
), 

它的工作原理在我的情況下。