在“约定页面”中,它表示(此处谨慎使用noob):
“CakePHP不支持复合主键。如果要直接操作连接表数据,请使用直接查询调用或添加主键作为普通模型对其进行操作。”
我对此声明感到非常困惑。复合键是非常基本的,并形成许多具有识别关系的数据库结构。
我正在开发我的架构,并且正在尝试使用复合材料,但这是不可能的。
这是如何工作的?
答案 0 :(得分:0)
CakePHP希望你拥有set up a database。您必须使用某些命名约定。然后通过configuration file将其描述为CakePHP代码。
数据库应具有适当的主键,备用候选键,外键和约束。但引用的行告诉您确保每个表都有一列主键。所以这意味着你不会有这样的主键,你添加一个列,使它成为主键,并将主键列声明为UNIQUE NON NULL(这是PRIMARY KEY所做的),即作为备用候选键。
您还应该添加任何适当的新版本约束,包括新的外键。请注意,旧的外键可以保持原样,因为SQL FOREIGN KEY声明只需要引用唯一字段,而不是主键本身。 (即它确实是一个外来的超级密钥声明。)你还应该在表中约束这些新的+旧外键对,实际上是引用表中的一对有效值,即声明组合列为组合列的外键为唯一。 (即,您不希望主要和替代键值都在引用的表中,您希望它们在一起。)