【发布时间】:2009-07-01 18:55:09
【问题描述】:
我有一个与外部公司系统相关联的 CakePHP 模型 - 用户。我将一些数据存储在这些系统上,并在本地存储其他数据。在我的User::beforeSave() 方法中,我正在尝试设置一个 ID,将数据(使用该自定义 ID)发送到我的公司系统,然后,如果它成功插入到那里,则返回 true,以便 Cake 将插入新的用户记录相同的 ID,以便我以后可以链接它们。
我找不到实现这一点的方法。有没有办法插入具有用户指定主键值的 CakePHP 记录?我正在使用 UUID,因此(实际上)没有重叠的机会。
$this->data['User']['id'] = String::uuid()
try {
$user_proxy = new CoreServicesUserProxy();
$corp_user = $user_proxy->CreateUser (
array (
'user' => array (
'UserName' => 'myusername',
'EmailAddress' => $this->data['User']['email'],
'SecurityId' => $this->data['User']['id']
)
)
);
}
catch ( Exception $e ) {
// error handling stuff
return false;
}
【问题讨论】:
-
您是否尝试将 $Model->id 与 data['User']['id'] 一起设置?如果您只是在事务中插入一个新用户,获取新 id,调用服务,如果一切顺利,只需提交就可以了吗?
-
不,我想我没有那样做。我认为如果我正确阅读文档,这将强制更新而不是插入。目前,我已将 API 调用移至 User::afterSave() 并且它工作正常,但这不是我理想的顺序。我会调查交易,但我想知道是否可以在使用回调的同时使用这些交易。感谢您的帮助。
标签: cakephp