CakePHP有许多关系需要复数类名

时间:2014-09-15 17:09:12

标签: php mysql cakephp cakephp-2.3

我正在使用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');    
} 

0 个答案:

没有答案