首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历Doctrine的changeSet

遍历Doctrine的changeSet
EN

Stack Overflow用户
提问于 2015-04-21 10:59:02
回答 1查看 196关注 0票数 3

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

我在将变更集保存到数据库时遇到问题,这就是为什么我要筛选重要字段的原因。这可用于保存变更集,但当变更集中有多个嵌套数组时,该数组将无法正确保存(数组中的3个左右数组之后将被截断)。我在postgres中使用数组类型。在我的更新后事件中,我有:

代码语言:javascript
复制
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中更改的字段名称?

EN

回答 1

Stack Overflow用户

发布于 2015-04-21 11:28:00

我想我有一个很好用的解决方案。它添加了实体类型,因此它与Doctrine2中的变更集不完全匹配,但我认为这符合我的目的。我发现了一堆来自人们的帖子,这些帖子试图记录Doctrine中的特定更改,结果好坏参半,所以如果有人有更好的解决方案,请发帖子。

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29762100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档