You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EntityAuditBundle中忽略多对多关联的审计?

问题描述

我使用EntityAuditBundle审计实体变更,我的User实体采用Doctrine自引用多对多关联,代码如下:

<?php
/** @Entity **/
class User
{
    // ...

    /**
     * @ManyToMany(targetEntity="User", mappedBy="myFriends")
     **/
    private $friendsWithMe;

    /**
     * @ManyToMany(targetEntity="User", inversedBy="friendsWithMe")
     * @JoinTable(name="friends",
     *      joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
     *      inverseJoinColumns={@JoinColumn(name="friend_user_id", referencedColumnName="id")}
     *      )
     **/
    private $myFriends;

    public function __construct() {
        $this->friendsWithMe = new \Doctrine\Common\Collections\ArrayCollection();
        $this->myFriends = new \Doctrine\Common\Collections\ArrayCollection();
    }

    // ...
}

已配置审计该实体:

simple_things_entity_audit:
    audited_entities:
        - App\Entity\User

目前该实体的多对多关联及关联表friends也被审计,我希望忽略这部分审计,是否可行?期望通过类似如下配置实现:

simple_things_entity_audit:
    global_ignore_tables:
        - friends
解决方案

可行,你可以通过两种方式实现忽略多对多关联的审计:

方式一:全局忽略关联表

直接在配置中添加global_ignore_tables字段,指定要跳过审计的关联表名称,完全符合你期望的配置方式:

simple_things_entity_audit:
    audited_entities:
        - App\Entity\User
    global_ignore_tables:
        - friends

该配置会让EntityAuditBundle完全跳过对friends表的所有审计操作。

方式二:精准忽略实体关联字段

如果只想忽略User实体中特定的多对多关联字段,而非整个表,可以在对应的属性注解中添加@AuditIgnore:

<?php
/** @Entity **/
class User
{
    // ...

    /**
     * @ManyToMany(targetEntity="User", mappedBy="myFriends")
     * @AuditIgnore
     **/
    private $friendsWithMe;

    /**
     * @ManyToMany(targetEntity="User", inversedBy="friendsWithMe")
     * @JoinTable(name="friends",
     *      joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
     *      inverseJoinColumns={@JoinColumn(name="friend_user_id", referencedColumnName="id")}
     *      )
     * @AuditIgnore
     **/
    private $myFriends;

    // ...
}

这种方式只会忽略指定的关联字段审计,不会影响User实体其他属性的审计记录。

注意:请确保你的EntityAuditBundle版本支持上述配置,部分旧版本可能需要升级才能使用global_ignore_tables或@AuditIgnore注解。

内容的提问来源于stack exchange,提问作者Oleg Dmitrochenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:57:45