Cakephp避免模型之间的错误条件

Cakephp避免模型之间的错误条件,cakephp,Cakephp,我正在使用cakephp 2.5,需要将Vehicle表与Address表连接,其中vei_id是外键 我有一个查找操作正在为两种车型生成错误的状况:车辆和地址 Address具有vei_id列,该列是加入车辆表的外键 查询正在生成vehicle\u id作为连接两个表的列,问题是该列甚至不存在 我已经使用vei_id列映射了这两个模型 我怎样才能避免这种情况?似乎cakephp尝试猜测连接列,即使我已经使用我想要的列编写了条件 //Vehicle Model public $hasOne =

我正在使用cakephp 2.5,需要将
Vehicle
表与
Address
表连接,其中
vei_id
是外键

我有一个查找操作正在为两种车型生成错误的状况:
车辆
地址

Address
具有
vei_id
列,该列是加入车辆表的外键

查询正在生成
vehicle\u id
作为连接两个表的列,问题是该列甚至不存在

我已经使用
vei_id
列映射了这两个模型

我怎样才能避免这种情况?似乎cakephp尝试猜测连接列,即使我已经使用我想要的列编写了条件

//Vehicle Model
public $hasOne = array(
            'Address' => array(
                'className'  => 'Address',
                'conditions' => array('Vehicle.vei_id = Address.vei_id'),
                'foreignkey' => false
            )

//Address Model
public $belongsTo = array(
    'Vehicle' => array(
        'className' => 'Vehicle',
        'conditions'=> array('Vehicle.vei_id=Address.vei_id'),
        'foreignKey' => 'vei_id'
    ),
);

//At vehiclecontroller
$data = $this->Vehicle->find('first', array(
    'conditions' => array('Vehicle.vei_id' => $vehicleId),
    'contain' => array(
        'Address' => array('conditions'=>  array('Address.vei_id'=>'Vehicle.vei_id',
                                                          'Vehicle.vei_id' => $vehicleId
                                            ),
                            )),
));
它生成以下行:

LEFT JOIN Address ON (
    Address.vehicle_id = Vehicle.vei_id
    AND Address.vei_id = 'Vehicle.vei_id'
    AND Vehicle.vei_id = 123
)
如果此列不存在:

Address.vehicle_id = Vehicle.vei_id

您的查询看起来有点混乱:

只需查看contain中的以下条件:

为什么在contain中使用以下条件

 Address.vei_id'=>'Vehicle.vei_id
你这样做是为了连接两张桌子吗

当您使用contain时,这些事情是按照cakephp的约定完成的。 地址表已与车辆表联接

请参见此处:

还有,为什么不遵循cakephp惯例呢

这些事情也会减少你的工作量,让事情变得更容易


请参见此处:()。

为什么使用Vehicle.vei_id?车辆表中是否有vei_id列?看起来应该是Vehicle.id。有一个内部约定以这种方式命名主键,vei_id列存在,Vehicle_id不存在。因此,我唯一的选择是尝试将cakephp改编为以前的现有关系模型
 Address.vei_id'=>'Vehicle.vei_id
 If you have vehicles table,
 the foreign key would be vehicle_id according to cakephp convention. 
 And if you have users table foreign key would be user_id.