这与 CakePHP 本质上是同一个问题:是否可以插入带有预定义主键值的记录?. 在 CakePHP 1.2 中,我想插入一条具有预定 id 的记录。id 的值由外部系统确定,但与链接问题不同,我无法控制该系统,因此该问题的解决方案对我来说不是一个选项。
如果调用时设置了模型的 id 字段$model->save()
,Cake 将始终尝试更新记录。false
如果不存在具有该 id 的记录,Cake 甚至会将 id 设置为[1]:
<?php
function save($data = null, $validate = true, $fieldList = array()) {
// snip
if (!$this->__exists && $count > 0) {
$this->id = false;
}
// snip
}
首先保存模型然后手动更新 id 也不是一种选择,因为这会破坏引用完整性(这是我也无法控制的架构限制)。
那么如何强制 CakePHP 插入带有特定主键的记录呢?
我面临的问题的一些背景:
我正在处理的应用程序由 Postgres 数据库支持,因此新的主键由序列确定。有一个过程,外部系统将SELECT nextval('my_model_sequence')
使用该 id 进行一些工作,然后将其传递给 CakePHP 应用程序,我想在其中INSERT
使用该 id 记录 my_model 。
保存记录后,我无法调用外部进程。我也根本无法修改外部流程。