我设置了多个模型,我想与这样的主模型相关联:
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-&gt; find('all'))获取数据时,我在'on clause'上收到类似“未知列'CommonTypeDescription.type_description_id'的错误< /强>“
首先,我认为我必须将描述模型的主键声明为“id”,但它接缝,外键定义将覆盖来自关键模型的主键的蛋糕的命名约定。
非常感谢您的帮助和帮助;问候, 吉
PS。我已经更改了这篇文章的模型名称(如果存在类型错误)。因此,当我重命名关联表的主键时,一切正常,但我希望它们只能命名为“id”。
答案 0 :(得分:0)
如何将CommonType模型更新为:
'CommonTypeDescription' => array(
'className' => 'CommonTypeDescription',
'foreignKey' => 'common_type_id', //or try type_description_id if there's an error
'dependent' => true
)
然后在您的CommonTypeDescription模型上添加此关系,我认为您忘记添加属于CommonType模型的关系:
public $belongsTo = array(
'CommonType' => array(
'className' => 'CommonType ',
'foreignKey' => 'common_type_id',
));