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 图像 - 无法确定 mimetype

    蛋糕PHP 2 3 我正在上传图像 但出现错误 Can not determine the mimetype Error An Internal Error Has Occurred 在我的模型上 这是我的 validation 的一部分
  • CakePHP GROUP 和 COUNT 个项目在列表中返回

    我知道这里有一些类似的问题 但它们都是关于使用时的 Model gt find all 但这不是我正在做的 我正在做的 Model gt find list 这就是工作与不工作之间的区别 给定一组产品 我想找到该组中的所有品牌以及每个品牌的
  • 在 CakePHP 中访问 Configuration::read 控制器

    我的 CakePHP 应用程序有一个单独的配置文件 该文件加载在 bootstrap php 中 我的问题是 如何访问控制器中的配置变量 IE 如何在控制器中执行Configure read variable 函数 谢谢 在我的自定义配置文
  • 将子域重定向到 CakePHP 操作

    背景 我有一个 CakePHP 应用程序 位于 m 我想写一个根级别的 htaccess文件 它将重定向网站的 子域 作为操作的参数 例如 我想编写一个重写规则 这将导致像这样的重定向 http mysite myserver com ht
  • 按 ID 分组和按日期排序

    lastComments this gt Comment gt find all array fields gt array Comment news id Comment date Comment content group gt arr
  • CSS 不适用于 CakePHP 应用程序

    我在使用 CakePHP 时遇到问题 找不到 CSS 当我在浏览器中查看源代码时 我可以在头部看到蛋糕通用 CSS 链接 但是当我点击它查看实际的源代码时 我收到了 404 未找到错误 Update 我已按照此处的说明进行操作 http b
  • CakePHP 3.X 中的自定义 404 页面

    我想为生产环境中出现的所有错误创建一个自定义 404 页面 例如 如果我收到缺少控制器或视图错误 那么它将重定向到http example com 404 html 另外在某些情况下我会故意重定向它http example com 404
  • 如何安装 Miles J 的 cakephp 论坛插件?

    我很确定这是一个蛋糕 1 3 问题 该插件与 2 0 不兼容 我正在尝试为论坛安装 cakephp 的 Miles J 插件 可以在这里找到 http milesj me code cakephp forum http milesj me
  • Cakephp - CSRF 令牌不匹配

    我在 Cakephp 3 6 中有一个项目 其中 MessageController 中的 3 个操作由 Ajax 调用 但是 我有一个问题 当我向其中一个操作发送请求时 XHR 会向我返回以下内容 message CSRF token m
  • CakePHP 3 API 的 POST 请求不起作用

    我正在使用 CakePHP 3 x 文档开发 API 为了开发这个 API 我使用了他们的官方文档 https book cakephp org 3 0 en development rest html https book cakephp
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • CakePHP Xml 实用程序库触发 DOMDocument 警告

    我正在使用 CakePHP 在视图中生成 XMLXML核心库 http book cakephp org 2 0 en core utility libraries xml html xml Xml build data array ret
  • CakePHP PaginationRecallComponent,严格 (2048):PaginationRecallComponent::initialize() 声明

    我尝试插入分页调用组件 http bakery cakephp org articles Zaphod 2012 03 27 paginationrecall for cakephp 2 x http bakery cakephp org
  • cakephp中的递归是什么意思?

    好吧 我正在关注的教程中有这行代码 但是 它没有为我提供有关递归的明确解释 我是 cakephp 的新手 搜索了这个 递归 我希望有人能为我提供这段代码的外行解释 this gt Author gt recursive 1 谢谢 Googl
  • 如何在 nginx 反向代理后面安全地检测 CakePHP 中的 SSL?

    CakePHP 我见过的所有版本 检查 SERVER HTTPS 查看请求是否是通过 HTTPS 而不是普通 HTTP 发出的 我使用 nginx 作为负载均衡器 后面是 Apache 应用程序服务器 由于 SSL 连接在负载均衡器处终止
  • CakePHP:无法访问 MySQL 数据库

    我是 CakePHP 的新手 刚刚完成配置过程 但很困惑为什么 Cake 无法访问我的 MySQL 数据库 Cake 信息页面显示我的 tmp 目录是可写的 FileEngine 正在用于缓存 不知道这意味着什么 并且我的数据库配置文件存在
  • 如何删除 CakePHP 的尾随计时基准注释

    我已经解决这个可怕的问题几个小时了 尽我所能在谷歌上搜索 但仍然不幸找到解决方案 问题是 CakdPHP 渲染的每个页面都有一个默认的尾随计时基准注释 例如 如何删除最后一行 在此处输入代码 core php or anywhere els
  • 防止 CakePHP 在实例化模型时自动连接数据库

    我公司的 DBA 有一个脚本 可以自动终止生产数据库上长时间运行的数据库连接和查询 我编写了一个在循环中运行的 CakePHP Shell 应用程序 有点像守护进程 需要定期进行数据库读取和写入 如果运行时间太长 维护脚本会关闭数据库连接
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • CakePHP保存三模型关系关联

    我有以下输出 需要将其插入数据库中 Array Test gt Array Question gt Array 0 gt Array category id gt 3 answer style id gt 2 Answer gt Array

随机推荐

  • 在 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 发送到我的公司系统 然后 如果它在那里