cakephp 安装mysql_mysql – CakePHP 2复合主键

本文探讨了如何在数据库设计中处理复合主键和多态关联。通过创建一个特殊的键结构,可以简化多态关联的管理,如在`positions`表中使用`foreign_id`和`type`作为联合索引来实现。同时,文章提到了在ORM模型中如何定义这样的关联,以确保数据操作的正常性和效率。示例代码展示了在PHP的CakePHP框架中如何设置一对一关联。

直到版本3才支持

您可以使复合主键工作,但这样做并不简单(总之,将其中一个字段作为primaryKey处理/指定,并使用回调处理另​​一个;需要覆盖Model::exists,为任何关联添加条件) – 如果是这样做可以更容易地为表添加一个唯一的密钥 – 这将允许正常使用和全面“它只是工作” – 性.

这是一种多态关联

知道你在问题中得到的是多态关联(位置属于PC,位置属于MO),而你可以将这两个字段视为他们真正表达关联的主键 – this behavior可能对你有用,它还包含使用可能与您的用例相关的条件定义模型关联的示例.

例如,基于问题中的信息,此架构将使用法更容易:

CREATE TABLE `positions` (

`id` int(11) unsigned NOT NULL auto_increment, //

`type` varchar(30) NOT NULL,

`foreign_id` int(11) unsigned NOT NULL, //

`key` int(11) unsigned NOT NULL,

PRIMARY KEY (`id`),

KEY (`foreign_id`, `type`)

);

这将是逆模型关联的一个例子:

class Pc extends AppModel {

public $hasOne = array(

'Position' => array(

'foreignKey' => 'foreign_id',

'conditions' => array('Position.type' => 'PC'),

'dependent' => true

)

);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值