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