我正在使用CakePHP处理货运应用程序,我找到了解决问题的方法,但我仍然不明白问题所在。
这是我的国家模式
class Country extends AppModel {
public $recursive = 1;
public $hasMany = array(
'Port' => array(
'className' => 'Ports'
)
);
}
此代码有效。但以下情况并非如此。
//Broken example #1
class Country extends AppModel {
public $recursive = 1;
public $hasMany = 'Port';
}
这两者都没有。
//Broken example #2
class Country extends AppModel {
public $recursive = 1;
public $hasMany = 'Ports';
}
我的数据库表是ports
。我的模型是Port
,我的控制器是PortsController
。
蛋糕文档让我相信我应该使用hasMany
关系的单数名称。使用单数名称适用于我程序中其他位置的belongsTo
关系。
很难获得调试信息,因为所有请求都是ajax,但从我能够看到的情况来看,查询并没有任何不同。
使用工作代码,我的查询是:
SELECT `Country`.`id`, `Country`.`name` FROM `db`.`countries` AS `Country` WHERE 1 = 1
SELECT `Port`.`id`, `Port`.`country_id`, `Port`.`name` FROM `db`.`ports` AS `Port` WHERE `Port`.`country_id` IN (1, 3, 2)
使用破碎的示例#1,我得到的查询是:
SELECT `Country`.`id`, `Country`.`name` FROM `db`.`countries` AS `Country` WHERE 1 = 1
SELECT `Port`.`id`, `Port`.`country_id`, `Port`.`name` FROM `db`.`ports` AS `Port` WHERE `Port`.`country_id` IN (1, 3, 2)
那么为什么这个模型表现得如此奇怪?
编辑:添加端口模型
class Port extends AppModel {
public $belongsTo = array('Country', 'Customer');
}