迭代 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 的变更集 的相关文章

  • 我如何知道请求是否来自 flash swf?

    我有一个用 flash 开发的应用程序 我需要访问一些 php 文件 因此 如果访问来自 swf 则 php 文件会返回一些数据 如何判断请求是否来自Flash 无需将 get post 变量传递给 php 可能是用户代理 推荐人 请记住
  • 为什么当尝试使用 $this->data 访问 CakePHP 时,密码字段为空?

    我正在实现一个身份验证组件 这是我的注册页面 create User array action gt login echo form gt input primary email array size gt 32 echo form gt
  • Ubuntu 18.04升级后php7.2-curl无法安装

    今天从 16 04 升级到 18 04do release upgrade d 在升级过程中 我被告知一些软件包将被删除 其中包括 删除 libperl5 22 lxc common perl modules 5 22 php imagic
  • 如何验证使用 php 上传的文件不包含可执行二进制文件?

    使用简单的 Firefox 插件 黑客可以更改他们想要上传的任何文件的 MIME 类型 绕过文件类型检查器 然后 黑客可以使用 GIMP 等程序将 php 脚本嵌入到图像 音频或任何其他文件的二进制数据中 我该如何检查并防止这种情况发生 您
  • 访问 public_html 级别之外/以下的文件

    如何通过 url 访问文件 home uzair etc index php 即使我运行域 something com 它显示了 home uzair public html index php 这个文件 任何人请帮助我如何访问放置在 ho
  • 如何比较两个字符串的大小写和变音符号不敏感?

    我有两根弦 字符串 1 塞巴斯蒂安 字符串 2 塞巴斯蒂安 我想通过忽略 重音 字符来比较这两个字符串 谁能知道这个逻辑吗 提前致谢
  • Java中整数数组的排列算法

    我有一个工作示例来生成字符串中的所有字符排列 如下所示 static ArrayList
  • 将 PHP mcrypt 与 Rijndael/AES 结合使用

    我正在尝试使用 php 中的 mcrypt 和密码 Rijndael 加密一些文本消息 但我不确定 MCRYPT MODE modename 根据 PHP 手册 这些可用 ecb cbc cfb ofb nofb 或 stream 但我读到
  • 如何读取 XML 文件并从中获取值以在 PHP 编码的 HTML 页面中显示

    我有一个 XML 文件 其中有一些重复的标签 其中包含不同的值 我需要获取这些值并显示在我的网页中 请帮助我得到这个 如果您使用 PHP5 可以查看 SimpleXML 您可以在这里找到介绍教程 http www w3schools com
  • PHP 相等变量

    我想知道是否有任何方法可以检查大量变量是否相等 如果我只有几个变量 我可以这样做 if a b a c b c 但是 如果我有 20 个变量 则需要一些时间来编写所有组合 还有其他方法吗 if count array unique arra
  • 如何在无法重启的服务器(Apache)上使用gettext?

    我在服务器故障上问了这个问题 https serverfault com questions 104224 how do you use gettext on server apache you cant restart但我没有得到任何回应
  • Opencart最低下单价不包括一类

    我正在使用 opencart 并成功为所有交易添加了最低订单价格 这是我使用的代码 div div div class warning Minimum 10 Euro to checkout div 现在我想从中排除一个类别 以便可以购买该
  • DOMPDF - 未找到“字体”类

    我正在尝试通过命令行添加字体 每次我尝试都会收到以下错误 Fatal error Class Font not found in home scripts public html MarketingPalv2 load font php o
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • 图像创建从jpeg() PHP

    我正在使用 imagecreatefromjpeg 函数合并两张图片 现在我面临的问题是 当我使用服务器中的图片时 它工作正常 而当我使用其他网站的图片时 它不起作用 例如 当我使用这个 PHP 文件时http coolfbapps in
  • 在 Javascript 中创建数组

    我对 javascript 不太熟悉 并且在用 javascript 制作 2d 或者也许我可能需要 3d 数组时遇到了一些麻烦 我目前需要收集 2 条信息 一个 ID 和一个值 因此我创建了以下内容 var myArray var id
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015
  • 如何移动 Zend_Layout 的“视图”

    通常它会是这样的结构 application modules somemodule views scripts index index phtml 我如何将其移动到 application templates somemodule temp

随机推荐

  • 扩展显示上的 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 的变更集

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