迭代 Doctrine 的变更集

2024-03-14

我正在尝试记录用户在我的网站上执行的特定操作,并让侦听器检查某些实体是否正在更新,如果是这样,我的目标是记录他们正在编辑的字段,但不是所有字段(有些字段并不重要)或太长)。

我在将更改集保存到数据库时遇到问题,这就是为什么我想过滤重要字段。这可以保存变更集,但是当变更集中有多个嵌套数组时,该数组无法正确保存(它会在数组内有 3 个左右的数组后被切断)。我在 postgres 中使用数组类型。在我的更新后活动中,我有:

if ($entity instanceof ListingQuery) {
        $entityManager = $eventArgs->getEntityManager();
        $ul = new UserLog();
        $uow = $entityManager->getUnitOfWork();
        $changeset = $uow->getEntityChangeSet($entity);
        $ul = new UserLog();
        $ul->setLog($changeset);
        $ul->setUser($entity->getUser());
        $entityManager->persist($ul);
        $entityManager->flush();
    }

我一直在查看文档,但不太确定如何迭代 $changeset。它是一个多维数组,可以根据更新的字段数量包含可变数量的数组。 Userlog 是一个用于保存 $changeset 的简单实体,日志字段是一个数组。

我创建了一个函数,它接受 $changeset 并循环遍历数组的前三个级别,但它不保存字段的名称,只保存之前和之后的值。如何访问 $changeset 中更改的字段名称?


我想我有一个效果很好的解决方案。它添加了实体类型,因此它与 Doctrine2 中的变更集不完全匹配,但我认为适合我的目的。我发现了许多其他帖子,人们试图记录 Doctrine 中的特定更改,但结果参差不齐,因此如果其他人有更好的解决方案,请发布。

public function looparray($arr, $type) {
    $recordset[] = array($type);
    $keys[] = array_keys($arr);
    foreach ($keys as $key) {
        if (!is_array($key)) {
            if (array_key_exists($key, $arr)) {
                $recordset[] = array($key => $arr[$key]);
            }
        } else {
            foreach ($key as $key1) {
                if (!is_array([$key1])) {
                    $recordset[] = array($key1 => $arr[$key1]);
                } else {
                    if (!is_array([$key1])) {
                        $recordset[] = array($key1 => $arr[$key1]);
                    } else {
                        $recordset[] = array($key1 . ' changed ' => $key1);
                    }
                }
            }
        }
    }
    return $recordset;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

迭代 Doctrine 的变更集 的相关文章

  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • 是否可以将路由参数传递给 Laravel 中的控制器构造函数?

    是否可以将路由参数 或路由段 注入到控制器构造函数中 您找到一些代码来澄清我的问题 class TestController protected param public function construct paramFromRoute
  • 如何使用 PHP 构建正确的 SOAP 请求

    我需要格式化 构建此 SOAP 服务 的请求 http api notificationmessaging com NMSOAP NotificationService wsdl http api notificationmessaging
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • PHP:读取所有传入 HTTP 请求的类 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 GitHub Action 中使用不同版本的 PHP 进行测试

    我有一些 PHP 代码 其中包含使用以下命令运行的测试PHPUnit并想对其进行测试GitHub Actions 我在他们的文档中找不到测试 PHP 包的方法 我想使用不同版本的 PHP 进行测试 但他们只有最新的版本7 3安装 您可以添加
  • 使用 PHP/linux 将文件合并为单个 PDF

    我正在研究如何将多个 PDF 合并为一个 PDF 我正在寻找一个图书馆可靠且坚固尽可能 最好有一个库可以保留书签 鬼脚本 http pages cs wisc edu ghost 可以在保存书签的位置进行连接 但我遇到了麻烦 在一种情况下它
  • 如何在 PHP 的 HTML 页面中显示错误消息?

    我有以下登录表单 login php 其中要求输入用户名和密码
  • 如何在 JavaScript 中创建服务器端进度指示器?

    我想在我的网站中创建一个部分 用户可以在其中进行一些简单的操作update纽扣 这些中的每一个update按钮将发送到服务器 并在幕后进行长时间的处理 当服务器处理数据时 我希望用户有某种进度指示器 例如进度条或文本百分比 我使用 jQue
  • 在哪里可以学习网络编程从入门到精通? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我尝试做教程 但它是无组织且无结构的 我在哪里可以学习 PHP 从初学者到大师 我正在寻找类似的网站w
  • PHP 中标头的使用

    非常简单的问题 这两个 PHP 版本 5 标头调用中哪一个是 最好的 header Not Modified true 304 header HTTP 1 1 304 Not Modified 我很确定第一个是最多价的 但只是好奇如果在 H
  • Laravel Vue 组件只能传递数字?

    在我的 UserMenu vue 中我写道 export default props nameVal data return 并在blade php中
  • docker 中的 php Curl 冲突 CURLOPT_FILE 和 CURLOPT_RETURNTRANSFER

    当我使用curl时CURLOPT FILE and CURLOPT RETURNTRANSFER选项 文件为空 没有任何curl错误 fp fopen saveTo w ch curl init fileUrl curl setopt ch
  • Facebook PHP-SDK 页面刷新后似乎丢失了 userID

    我似乎登录工作正常 我可以登录 接受应用程序 第一次 然后显示用户信息 例如姓名 图片 等 然而 当我刷新页面时 userid 又回到 0 我必须再次登录 我不确定问题是什么 我必须在每次页面加载时重新启动它还是什么 我不知道 我会发布一些
  • 如何使用更新资源控制器 laravel 4?

    我有带有索引 编辑 更新方法的客户控制器 Route resource customer CustomerController 控制器方法更新 public function update id echo id 我的 HTML 表单
  • PHP 检查当前日期是在设定日期之前还是之后

    我从数据库中提取一个日期 其格式为 dd mm YYYY 我想做的是检查当前日期 如果当前日期早于数据库中的日期 则需要打印数据库日期 如果是在之后 则需要打印 继续 有人能指出我正确的方向吗 if strtotime database d
  • 使用会话 php 创建 cookie?

    我使用会话来登录我网站中的用户 问题是 我想让用户remember密码 因此关闭 打开浏览器后他们不需要再次登录 我需要使用 cookie 和 session 来实现它吗 my code user POST user pass POST p
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • PayPal 网关已拒绝请求。安全标头无效(#10002:安全错误 Magento

    在 magento 中增加 PayPal 预付款 我已填写 magento admin 中的所有凭据 但是当我进入前端并单击 pay pal 按钮时 它给出了 PayPal 网关已拒绝请求 安全标头无效 10002 安全错误 我用谷歌搜索了
  • 如何计算 3D 坐标的线性索引,反之亦然?

    如果我有一个点 x y z 如何找到该点的线性索引 i 我的编号方案是 0 0 0 是 0 1 0 0 是 1 0 1 0 是最大 x 维度 另外 如果我有一个线性坐标 i 我如何找到 x y z 我似乎无法在谷歌上找到这个 所有结果都充满

随机推荐

  • 扩展显示上的 Eclipse 缩放问题

    我的设置是一台戴尔 XPS 13 笔记本电脑 3200 x 1800 Windows 10 两台扩展显示器 1680x1050 通过戴尔 Thunderbolt 坞站连接到笔记本电脑 我的问题是在xps13 eclipse上显示正常 但在扩
  • 错误:System.Environment.SpecialFolder”不包含“CommonApplicationData”的定义

    我有将文件保存在目录中的文件夹中的代码 string timestamp DateTime Now ToString MM dd yyyy HH mm ss var file File Create Owe Data txt timesta
  • 如何将 getimagesize() 与 $_FILES[''] 一起使用?

    我正在做一个图像上传处理程序 我希望它能够检测用户上传的图像的尺寸 所以我从以下开始 if isset FILES image etc 我有 list width height getimagesize 我应该如何一起使用它们 多谢 你可以
  • 使用 MVC3/.NET 异步文件上传器?

    大家 我是一名学生 对 NET 特别是 MVC3 开发很陌生 目前 在我的一个项目部分中有一个表单 其中包含几个文本字段和两个文件输入 考虑到上传的文件可能很大 我想使用异步文件上传器 它可以显示文件上传的进度 这样用户在后面上传文件时就不
  • 从证书中读取备用名称

    我想编写一段代码来读取用户主体名称来自其他名称 under 科目选择证书上的名称 我有 X509 证书 我做了 证书是 X509Certificate 对象 Collection san certificate getSubjectAlte
  • 远程连接到 Amazon RDS MySql

    我正在尝试从我的计算机连接到 Amazon RDS 上的 MySql 使用MySql WorkBench or HeidiSql甚至是console Mysql exe我一直收到这个错误 ERROR 2003 HY000 Can t con
  • 当一个接口“继承”另一个接口时,您怎么称呼它?

    如果我有 B 类 A 我说 B类遗传A 类 或 B 类派生自 A 类 但是 如果我有 class B ISomeInterface 说 B继承ISomeInterface 是错误的 正确的说法是 B实施ISomeInterface 但是 说
  • scipy.curve_fit() 返回多行

    我是 python 新手 尝试使用以下代码来适应数据集分布 实际数据是一个包含两列的列表 预测市场价格和实际市场价格 我试图使用scipy curve fit 但它给了我在同一个地方绘制的许多线条 任何帮助表示赞赏 import the n
  • 我可以从 Dapper 查询返回多个派生类型的集合吗

    我有一个与此类似的类结构 public abstract class Device public int DeviceId get set Additional Properties public class DeviceA Device
  • Mysql:将 NOT NULL 列更新为 null 时未收到错误

    为什么mysql在更新非空列时接受空数据 然后将数据转换为0 我期待一个错误 但它没有显示出来 如果有人尝试将非空列更新为空 我如何得到错误 我需要它 以便在出现错误时可以回滚事务 数据库中是否需要任何配置来执行此操作 谢谢 您还没有指定您
  • 如何正确检索表 ID

    根据数据库理论 数据库中的任何表都可以通过其完全限定名称来成功识别 catalog name schema name table name 在 SQL Server 中检索表 id 的方法是 SELECT object id table n
  • 默认移动构造函数与默认复制构造函数与默认赋值运算符

    为什么 C 编译器对自动生成的移动构造函数比对自动生成的复制构造函数或赋值运算符有更多限制 仅当用户未定义任何内容时 才会生成自动生成的移动构造函数 即 构造函数 复制 赋值 析构函数 仅当用户未分别定义复制构造函数或赋值运算符时 才会生成
  • 日期查询适用于 _id 但不适用于日期值 - MongoDB

    所以 我几个小时以来一直在尝试 但没有得到任何结果 我有一个 MongoDB 集合 它有一个日期值 scrape systemTime 我将其插入scrape systemTime new Date 我试图通过使用以下方法获得早一周的结果
  • 与逃亡者一起离开差异视图

    有了 vim 逃亡者 有没有一种简单的方法来 取消分割 Gedit 返回工作树中的当前对象 E g when in Gcommit Gstatus buffers you would press D to enter side by sid
  • 嵌入式使用的轻量级(解)压缩算法

    我有一个带有图形用户界面的低资源嵌入式系统 该界面需要字体数据 为了节省只读存储器 闪存 需要压缩字体数据 我正在寻找一种用于此目的的算法 要压缩的数据的属性 每个像素 8 位的矩形像素图的透明度数据 字体中通常有大约 200 300 个字
  • 我该如何解决这个警告? “遇到两个拥有相同钥匙的孩子`.$1/.$2`”

    我正在使用导入 react native form select picker 在我的反应本机应用程序中进行选择输入 并且代码工作正常 但它仍然给我一个警告 遇到两个具有相同密钥的孩子 1 2 那么我该如何解决这个问题有人可以帮忙吗 下面是
  • C 标准库函数名称中的“f”代表什么?

    什么是fC 标准库函数的名称代表什么 我注意到很多函数都有一个f以他们的名义 这对我来说真的没有意义 例如 fgets fopen printf scanf sqrtf等等 你的问题总体来说太笼统了 但我可以解释一些例子 fgets htt
  • 在不同列中显示列表项元素

    我正在尝试更改 DataLife Engine 模板的外观 我想知道您是否可以帮助我进行对齐 我有一列显示一些信息 如下所示 div class short description div class table ul class tabl
  • const 记录参数的 [Ref] 属性有用吗?

    对于最新的 Delphi 版本 Berlin 10 1 24 Ref 属性真的有必要吗 我问这个是因为在线文档 http docwiki embarcadero com RADStudio Berlin en Parameters Delp
  • 迭代 Doctrine 的变更集

    我正在尝试记录用户在我的网站上执行的特定操作 并让侦听器检查某些实体是否正在更新 如果是这样 我的目标是记录他们正在编辑的字段 但不是所有字段 有些字段并不重要 或太长 我在将更改集保存到数据库时遇到问题 这就是为什么我想过滤重要字段 这可