CakePHP:是否可以插入具有预定义主键值的记录?

2023-12-22

我有一个 CakePHP 模型 - 用户 - 与外部公司系统有联系。我在这些系统上存储一些数据,在本地存储其他数据。在我的User::beforeSave()方法,我尝试设置一个 ID,将数据(使用该自定义 ID)发送到我的公司系统,然后,如果它在那里成功插入,则返回 true,以便 Cake 将插入具有相同 ID 的新用户记录,以便我稍后可以链接它们。

我找不到办法让这件事发生。有没有办法insert具有用户指定主键值的 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;
}

我知道您已经得到了一些提示,但这里有一些代码可能会有所帮助。

为什么不添加一个external_user_id字段到你的users table?

<?php
class User extends AppModel {

    function beforeSave() {
        $ds = ConnectionManager::getDataSource('core_services');
        $externalUser = $ds->createUser($this->data);
        if (!$externalUser) {
            return false;
        }
        $this->data['User']['external_id'] = $externalUser['id'];
        return true;
    }

    function afterFind($results, $primary) {
        // handle different types of find here ('all' vs 'first' vs through relation)
        foreach ($results as &$result) {
            $result = $this->_mergeExternalUser($result);
        }
    }

    function _mergeExternalUser($user) {
        $ds = ConnectionManager::getDataSource('core_services');
        $externalUser = $ds->retrieveUser($result['external_id']);
        return am($externalUser, $user);
    }

}
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePHP:是否可以插入具有预定义主键值的记录? 的相关文章

  • CakePHP:以数组作为参数调用另一个控制器的操作的最佳方法?

    在控制器中 调用另一个控制器的操作并传递数组作为参数的最合适方法是什么 我知道您可以使用 requestAction 来调用其他控制器中的操作 但是是否可以使用请求操作将数组作为参数传递 不 我不想将操作放入应用程序控制器中 所以这对我来说
  • 缓存文件模型 cakePHP

    将模型文件缓存在 app tmp cache models 中 我设置配置 Cache config default array engine gt File duration gt 3600000 serialize gt false 为
  • 如何为一般 authError 消息定义 FlashHelper/Component 元素

    将 CakePHP 从 2 6 2 更新到 2 7 2 后 在创建 auth flash 消息时出现丢失密钥错误 如何定义默认的元素模板authError Since SessionComponent setFlash 已经已弃用 http
  • CakePHP 总是让我退出

    最近我制作了三个蛋糕应用程序 这三个应用程序都有这个问题 配置大部分是库存的 我使用它作为会话选项 Configure write Session array defaults gt php cookie gt test 经过大量谷歌搜索后
  • 基于 GB 且仅限数字的电话号码的正则表达式

    我想要一个仅允许数字电话号码 例如 1234567890 以及 GB 格式号码 例如 123 456 7890 的正则表达式代码 该表达式必须适用于这两种情况 目前我正在使用下面的正则表达式 它只允许 GB 电话号码 d 3 s d 3 s
  • Cakephp 递归条件下的分页

    我对这个问题很生气 请有人帮助我 我有这个模型 订单有很多 gt 订单项有一个 gt 产品 产品有字段vendor id 我想对包含具有特定供应商 ID 的产品的订单进行分页 我怎样才能实现这个目标 我在订单控制器中的代码 if empty
  • CakePHP 3.0:如何在重复键更新时进行插入?

    我有一个数组 articles像这样 int 0 gt id gt 940039 xe dsca gt P2768G 1 xe citg gt 1F0200 xe cuni gt stk xe seak gt P2768G 1 xe sea
  • CakePHP:控制台命令中的自定义错误报告

    我们当前使用 CakePHP 2 4 7 和自定义错误处理程序 自定义错误处理程序适用于通过 HTTP 或 CronDispatcher 发出的每个请求 不幸的是 当向我们的控制台命令之一发出控制台请求时 错误处理程序被忽略 请参见以下示例
  • 我可以停止 CakePHP 获取查询的所有行吗?

    我正在使用 CakePHP 和 modelName gt find 调用选择相当多的行 可能是数百行 通常 在 PHP MySQL 中这当然不会成为问题 因为您在 while 循环中获取它们 但是 CakePHP 将所有行加载到一个数组中
  • 锚标记内的 CakePHP Span 标记

    我试图让 CakePHP 输出一个如下所示的链接 a href foo bar class some other classes span class icon new span FooBar a 所以我在我看来使用以下代码
  • 按 ID 分组和按日期排序

    lastComments this gt Comment gt find all array fields gt array Comment news id Comment date Comment content group gt arr
  • cakephp 3.0 如何使用值而不是 id 填充选择字段

    我一直在寻找以前的答案 但我找到的答案与旧的 cakephp 版本有关 我有两个表 杂志 和 问题 其中存在关系 问题 属于 杂志 问题表如下所示 public function initialize array config this g
  • CakePHP 会话被写入 /tmp/ 而不是 /app/tmp/sessions/

    这里有类似的简单但未回答的问题 cakephp 会话 tmp sessions 中没有新文件 https stackoverflow com questions 24733151 cakephp session no new files i
  • CakePHP Xml 实用程序库触发 DOMDocument 警告

    我正在使用 CakePHP 在视图中生成 XMLXML核心库 http book cakephp org 2 0 en core utility libraries xml html xml Xml build data array ret
  • 当复选框条件更改时,如何使用ajax更新mysql数据库?

    我有一个在客户端按行显示的文章表 每篇文章都有一个唯一的 ID 并包含一个复选框以指示该文章是否被选中为收藏夹 如果它是最喜欢的 则该复选框已被选中 如果没有 则未选中 现在 如果特定于每一行的复选框条件发生变化 我需要 js 或 jque
  • CakePHP hasOne/belongsTo 模型关系

    我有几个模型正在尝试关联 一种模型是Item 一个是Slide 另一个是Asset 项目下方有多个幻灯片 资产基本上是已上传的文件 图像 mp3 等 幻灯片是显示资产的位置 每张幻灯片都有一个资产 但给定的资产可能属于多张幻灯片 一张幻灯片
  • 动态创建的数据源未传递到 CakePHP 中的关联模型

    我有一个模型 汽车 该汽车有几个关联的模型 让我们考虑其中一个与hasMany关系 轮 在我的 CarsController 中 我使用以下代码动态生成数据源 schemaName this gt Session gt read User
  • CakePHP 中的 hasMan 简化为 hasOne

    基本上我在 CakePHP 中有以下模型 User id username Photo id user id path 我已经建立了以下关系 用户有很多照片 在一个屏幕上 我想列出用户 并在每个用户旁边显示随机照片 我尝试建立以下关系 用户
  • CakePHP Unfilled 单选按钮在提交时更改为不需要的值

    我有这个表单元素 form gt input ChecklistResponseGovernmentInfo driversLicenseIsOnline array type gt radio empty gt true options
  • 何时在 CakePHP 中进行清理

    我读了食谱 第 4 2 节 如果您使用 CakePHP 的 ORM 方法 例如 find 和 save 和正确的数组表示法 即 array field gt value 而不是原始 SQL CakePHP 已经可以保护您免受 SQL 注入

随机推荐

  • 在 Vim 中查找 C++ 类成员的定义/引用

    我正在将 Vim 用于一个我已经开始从事的 C 项目 并且最近我花了很多时间浏览现有代码以掌握它的窍门 为了使浏览更容易 我在 Vim 中设置了 ctags 和 cscope 来跳转到定义并查找引用 然而 我发现他们都没有足够的智能来知道成
  • 具有错误字符容限的最长公共子串

    我在这里找到了一个脚本 在寻找最低公共子串时效果很好 但是 我需要它来容忍一些不正确 丢失的字符 我希望能够输入所需的相似性百分比 或者指定允许的丢失 错误字符的数量 例如 我想找到这个字符串 大黄色校车 该字符串内部 那天下午他们乘坐黄色
  • 在node.js中使用python模块

    是否可以创建一种胶水 使 python 模块 更具体地说 库绑定 可以在 Node js 中使用 一些数据结构可以直接映射到 V8 对象 例如数组 字典 更重要的是 这会是比手动或通过 FFI 更优雅的创建绑定的方式吗 简而言之 值得吗 试
  • 更改seaborn条形图中的色标

    我想对我的数据使用seaborn条形图 并根据Y轴的值使用色标 例如 在此图像中 颜色根据调色板从左到右变化 但我真正想要的是相同的配色方案 但 垂直 而不是 水平 这可能吗 我已经搜索并尝试设置hueY 轴参数 但它似乎不起作用 我该怎么
  • 为什么 std::chrono::time_point 不够大,无法存储 struct timespec?

    我正在尝试最近的std chronoapi 和我发现在 64 位 Linux 架构和 gcc 编译器上time point and duration类无法以最大分辨率 纳秒 处理操作系统的最大时间范围 事实上 相比之下 这些类的存储似乎是
  • 谷歌地图v3:边界中心与地图中心不同

    怎么可能map getCenter 可能不同于map getBounds getCenter gt cragMap getCenter gt Q d 13 823563748466814 e 0 toString function b fu
  • Jupyter 笔记本注释快捷方式不起作用

    我试图使用 ctrl 在 jupyter 笔记本中注释行 但这不起作用 我使用的是 Windows 10 和 Mozilla Firefox 您的问题可能是由于您的浏览器设置造成的 ctrl 必须设置为其他值 否则您不会处于编辑模式
  • 如何让Hibernate在与JPA一起使用时自动在数据库中创建表?

    我是 JPA 的新手 现在我正在尝试理解标准示例 我在网上阅读并看到了一些 stackoverflow 问题 我在所有这些问题中发现以下语句将允许 hibernate 在运行时创建表 hibernate hbm2ddl auto creat
  • 如果我没有接住投掷会发生什么?

    这是非常基本的 但我在任何地方都找不到答案 那里有很多关于投掷和接球的帖子 但如果我实际上会发生什么throw from function1然后打电话function1 from function2但不要抓住它 这是否意味着它只是被重新抛出
  • 如何在不指定父字段的情况下直接查询嵌套字段?

    我在 mongodb 中有接下来的 3 个文档 文件1 name device1 camera number 3 文件2 name device2 camera number 1 文件3 name device3 wifi number 2
  • ng 选择样式组标题和项目

    我正在使用 ng select https ng select github io ng select data sources https ng select github io ng select data sources 我的角度项目
  • 如何防止浏览器将 ß 更改为 ss?

    我试图让以下德语字符正确显示 不幸的是 它显示为 ss 我尝试遵循我在以下位置找到的一些指示 如何在 HTML 中正确显示德语字符 https stackoverflow com questions 423693 how can i pro
  • 我可以使元素对悬停不可见吗?

    我有一个具有星爆效果 透明 png 背景 的 div 我想在它们悬停时将其叠加在一系列图像上 我必须使 div 变大才能包含图像 但这会妨碍检测图像上的悬停 我将它们全部作为背景图像 因此它们是通过高分辨率 css mediaquery 加
  • Java中的文件截断操作

    在 Java 中截断文件的最佳实践方法是什么 例如这个虚拟函数 只是作为一个例子来阐明意图 void readAndTruncate File f List
  • Nest Battery CamGenerateWebRtcStream 命令出现 INVALID_ARGUMENT 错误

    我正在尝试执行sdm devices commands CameraLiveStream GenerateWebRtcStream https developers google com nest device access traits
  • istream::getline 返回类型

    什么是istream getline方法返回 我这样问是因为我已经看到要循环遍历文件 应该这样做 while file getline char int handle input 被退回的是什么 它返回一个流 以便我们可以链接操作 但是 当
  • 在 github 上怎么说这是我

    我在设置 GitHub 信息时犯了一个错误 因此当我推送到存储库 X 时 出现的名称不是我的名字 我该如何修复它并说那是我 有什么办法可以做到这一点吗 在 BitBucket 中 存储库管理页面中有一个名为 用户名别名 的选项 注意 我是存
  • hg unshelve 好像没有效果?

    我们的团队刚刚开始使用 Mercurial 我们首先开始玩的事情之一是hg shelve 在本地 我可以毫无问题地搁置更改 据我所知 一切都很完美 但是 当我尝试取消搁置时 我得到了restoring backup files消息 但是当我
  • 5 位 zip 或空的正则表达式

    我有这个正则表达式来检查 5 位数字 d 5 我如何更改它 以便它对于空字符串也返回 true 将其封装在 并添加一个 使整个模式可选 实际上 您要么匹配 d 5 OR 空字符串 var regex d 5 console log rege
  • CakePHP:是否可以插入具有预定义主键值的记录?

    我有一个 CakePHP 模型 用户 与外部公司系统有联系 我在这些系统上存储一些数据 在本地存储其他数据 在我的User beforeSave 方法 我尝试设置一个 ID 将数据 使用该自定义 ID 发送到我的公司系统 然后 如果它在那里