【发布时间】:2014-07-04 04:51:24
【问题描述】:
我设置了多个模型,我想将它们与这样的主模型关联:
class CommonType extends AppModel {
public $useDbConfig = 'common';
public $hasOne = array(
'CommonTypeDescription' => array(
'className' => 'CommonTypeDescription',
'foreignKey' => 'type_description_id',
'dependent' => true
),
'CommonTypeExperience' => array(
'className' => 'CommonTypeExperience',
'foreignKey' => 'type_expirience_id',
'dependent' => true
),
'CommonTypeProperty' => array(
'className' => 'CommonTypeProperty',
'foreignKey' => 'type_property_id',
'dependent' => true
),
);
public $belongsTo = array(
'CommonTypeCategory' => array(
'className' => 'CommonTypeCategory',
'foreignKey' => 'common_type_id',
));
}
在 Heidi SQL(例如)中,我为表 type_experiences、type_properties 和 type_descriptions 设置外键,以便我的代码和表中的外键具有相同的名称。
但是现在,我不想将主键命名为外键,(例如)type_descriptions 表的主键应该命名为“id”。这是type_description的模型:
class CommonTypeDescription extends AppModel {
public $name = 'CommonTypeDescription';
public $useDbConfig = 'common';
public $useTable = 'type_descriptions';
public $primaryKey = 'id';
}
这里是数据库创建代码:
CREATE TABLE `type_descriptions` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`common_type_id` INT(11) NULL DEFAULT NULL,
`short_description` VARCHAR(50) NULL DEFAULT NULL,
`long_description` VARCHAR(50) NULL DEFAULT NULL,
`notes` VARCHAR(50) NULL DEFAULT NULL,
`modified` DATETIME NULL DEFAULT NULL,
`created` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `type_description_id` FOREIGN KEY (`common_type_id`) REFERENCES `common_types` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION) ...
但是当我尝试从我的模型 CommonType ($this->find('all')) 获取数据时,我收到类似“Unknown column 'CommonTypeDescription.type_description_id' in 'on clause' 的错误强>”
首先,我认为我必须将描述模型的主键声明为“id”,但它接缝的是,外键定义覆盖了关联模型中主键蛋糕的命名约定。
非常感谢您的帮助和问候, 圭多
ps。我已经更改了这篇文章的模型名称(如果有类型错误)。因此,当我重命名关联表的主键时,一切正常,但我希望它们只命名为“id”。
【问题讨论】:
标签: cakephp naming convention