2011-06-07 98 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', 
), 

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