Symfony 5(包括 4)使用 Gedmo Doctrine Extension for SoftDelete

2023-12-06

我尝试对 Symfony 5 中的某些实体使用软删除(使用 gedmo/doctrine-extensions),但遇到了一些麻烦:

侦听器“SoftDeleteableListener”未添加到 EventManager!

编译错误:App\Entity\Admin 和 Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity 在 App\Entity\Admin 的组合中定义了相同的属性 ($deletedAt)。然而,定义不同并且被认为是不兼容的。班级组成

这是我尝试过的,运行良好

  1. 安装 gedmo/doctrine-extensions

     composer require gedmo/doctrine-extensions
    
  2. 将列deleted_at添加到要使用软删除的表中(使用迁移或手动添加)

  3. 将配置添加到 config/packages/doctrine.yaml

     filters:
    
         softdeleteable:
    
         class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
    
         enabled: true
    
  4. 将配置添加到 config/services.yaml

     gedmo.listener.softdeleteable:
         class: Gedmo\SoftDeleteable\SoftDeleteableListener
         tags:
             - { name: doctrine.event_subscriber, connection: default }
         calls:
             - [ setAnnotationReader, [ '@annotation_reader' ] ]
    
  5. 添加 Gedmo 并在您的实体中使用 SoftDeleteableEntity

     <?php
    
     namespace App\Entity;
    
     use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
    
      /**
      * @ORM\Entity(repositoryClass=AdminRepository::class)
      * @ORM\Table(name="admins")
      * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, 
      hardDelete=false)
     */
     class Admin implements UserInterface
     {
         use SoftDeleteableEntity;
         ….
     }
    
  6. 最后,照常使用删除功能,deleted_at 列将被更新

     /**
      * @param Admin $admin
      */
      public function delete(Admin $admin)
     {
         $this->_em->remove($admin);
         $this->_em->flush();
     }
    

Note: 不需要添加deletedAt领域、方法getDeletedAt and setDeletedAt给您的实体


如果您使用 PHP 格式 (config/services.php) 而不是 YAML,请将步骤 4 更改为以下内容。

$services->set("gedmo.listener.softdeleteable")
->class(\Gedmo\SoftDeleteable\SoftDeleteableListener::class)
->tag(name: 'doctrine.event_subscriber', attributes: ["method" => "setAnnotationReader", "connection" => "default"])
->args([service('doctrine.orm.metadata.annotation_reader')])
;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony 5(包括 4)使用 Gedmo Doctrine Extension for SoftDelete 的相关文章

  • PHP_CodeSniffer - 显示失败的嗅探

    PHP CodeSniffer 中是否有设置来显示失败的嗅探 我将输出与我们的编码标准进行比较 并且一一使用很难破译哪个测试失败 看看我们可能想忽略哪个 如果有一种简单的方法来显示故障嗅探 那么我可以更轻松 更快地完成配置 您可以使用 s
  • (Zend Framework > Zend_Config) 如何避免使用 .ini 或 .xml 配置?

    我认为对于高流量项目来说使用 ini 或 xml 文件不是一个好主意 因为每个页面加载都会导致解析 config ini 或 xml 文件 有什么方法可以用常规 php 数组替换使用 ini xml 作为配置吗 现在 php ini 看起来
  • 将子域重定向到 CakePHP 操作

    背景 我有一个 CakePHP 应用程序 位于 m 我想写一个根级别的 htaccess文件 它将重定向网站的 子域 作为操作的参数 例如 我想编写一个重写规则 这将导致像这样的重定向 http mysite myserver com ht
  • PHP/PDO/MySQL:插入 MEDIUMBLOB 会存储错误数据

    我有一个简单的 PHP Web 应用程序 它通过文件上传接受图标图像并将它们存储在 MEDIUMBLOB 列中 在我的机器 Windows 和两台 Linux 服务器上 这工作得很好 在第三台 Linux 服务器上 插入的图像已损坏 在 S
  • XMLReader - 如何处理未声明的命名空间

    Merged https meta stackexchange com questions 158066 what is a merged question with 如何使用 XMLReader 读取未定义命名空间的 XML 文件 que
  • 使用 PHP 正则表达式从字符串中提取年份[重复]

    这个问题在这里已经有答案了 我想从字符串中提取年份 我得到了一个不完整的解决方案 我的字符串总是这样 请将爵士乐 2014 和 2015 的 mpg 发送至我的手机号码 123456789 我尝试过以下正则表达式 preg match al
  • 在composer.json中运行命令行命令

    我正在尝试编写一个composer json 文件 该文件将连续运行多个命令行命令 作为一个示例 如下所示 scripts test createDir createDir mkdir testing 当我在终端中运行作曲家文件时使用com
  • PHP:__toString() 和 json_encode() 不能很好地协同工作

    我遇到了一个奇怪的问题 我不知道如何解决它 我有几个类 它们都是 JSON 对象的 PHP 实现 这是问题的说明 class A protected a public function construct this gt a array n
  • PHP:从 array_values() 内的值中去除标签

    我想在用选项卡爆炸之前将标签从 array values 内的值中剥离出来 我尝试使用下面的这一行 但出现错误 output implode t strip tags array keys item 理想情况下 我想从值中去掉换行符 双空格
  • 使用 with 的热切加载模型,但给它起了另一个名字 - Laravel 5.2

    是否可以使用 with 方法来使用预加载 但给它另一个名称 就像是 gt with documents as product documents documents as categories 我有一个可以是产品或类别的文档表 急切加载可以
  • 将 PHP 变量保存到文本文件

    我想知道如何将 PHP 变量保存到 txt 文件 然后 再次检索它们 Example 有一个输入框 提交后写的东西 输入框将被保存到文本文件中 稍后需要结果 作为变量带回 假设变量是 text I 需要将其保存到文本文件并能够将其检索回来
  • PHPstorm - 无法在blade.php 文件中设置断点

    我正在开发 Laravel 应用程序 可以很好地调试我的控制器 php 文件 但我还想调试blade php 文件 在我当前的设置中 我遵循了所有 jetbrains 为 Laravel 推荐的设置 https confluence jet
  • Yii2 - 如何在用户身份中设置动态 authTimeout?

    在这里 我扩展了UserYii2 的身份 这是我的配置 user gt identityClass gt app models UserMaster class enableAutoLogin gt false loginUrl gt au
  • 如何使用 wpf webbrowser 将数据发布到 Web 服务器

    我想从数据库获取数据并使用它来让用户登录到网站 我有一个包含 Web 浏览器控件的 wpf 页面 我有这样的代码 用于将用户登录到用 php 编写的网站
  • mysqli_connect(): (HY000/2002): 无法建立连接,因为目标机器主动拒绝

    我知道有很多这样的问题 但我没有找到任何解决方案 我尝试过的事情 检查防火墙 重新启动我的电脑和 Apache 服务器 重新启动MYSQL 检查了我的代码 尝试了我所知道的和在互联网上找到的一切 这是我的代码
  • PHP 中 while (true){ 是什么意思?

    我看过这段代码 但不知道这意味着什么 while true echo Hello world 我知道什么是 while 循环 但是 while true 是什么意思 会执行多少次 这不是无限循环吗 虽然是无限循环 但您可以使用以下命令退出它
  • 如何在 Api-Platform 中按链接属性过滤结果?

    我有一个User实体和一个Organisation实体 存在关系ManyToOne之间Booking and User ORM ManyToOne targetEntity App Entity User inversedBy bookin
  • CodeIgniter:使用多维 POST 数据验证表单

    所以框架是CodeIgniter 2 0 2 我有一个表单 其中包含与数据库中的行相对应的字段组 字段名称的格式为 opt 0 foo opt 0 bar opt 1 foo opt 1 bar etc 索引 1 2等 并不对应于数据库中的
  • 在 Laravel 视图中使用 CSS?

    我刚刚开始学习 Laravel 并且可以掌握控制器和路由的基础知识 我的操作系统是 Mac OS X Lion 它位于 MAMP 服务器上 我的routes php代码 Route get function return View make
  • PDO 返回不正确但重复的数据。密钥不在数据库中。

    我刚开始使用 pdo 语句 所以可能是一些简单的东西 我还没有在 php net 上读过 查询数据库时我收到重复的结果 Result 0 gt Array umeta id gt 31 0 gt 31 user id gt 2 1 gt 2

随机推荐

  • 即使在 FormsAuthentication.SignOut() 之后 User.IsOnline = true

    我已在 web config 中设置 UserIsOnlineTimeWindow 2 然后我的 logout 函数已修改为 public ActionResult LogOff MembershipUser usr Membership
  • 使用D3,语义缩放可以应用于径向树吗?

    我用的是D3节点链接树 并且我在尝试对其应用语义缩放时遇到困难 我已经花了一些时间大惊小怪 试图让它发挥作用 所以我想我会在这里问 在我花更多时间之前看看它是否可能 我不确定语义缩放是否是线性的 仅此而已 编辑 工作解决方案 这是我的工作解
  • 如何使用 HttpURLConnection 在 Java 中等待 Expect 100-Continue 响应

    I am stuck使用 HttpURLConnection 向 Web 服务器发出 PUT http 请求 我有一些代码可以很好地发出 PUT 请求 并且我可以在标头中简单地包含 期望 100 继续请求属性 但是尽我所能尝试 我似乎无法让
  • Python:如果包含/不包含顺序相同,则从列表中删除子列表

    有没有办法从列表列表中删除重复的子列表 即使它们的顺序不同 那么我可以做类似 make 的事情吗 x 1 2 3 4 5 6 2 1 7 8 into x 1 2 3 4 5 6 7 8 是否有 itertools 函数或带有 for 循环
  • Swift 中优雅的“有界”方法

    我正在寻找一种更优雅的方法来为数字创建有界限制器 主要用于设置器 有很多技术可以确定一个值是否在界限内 但我没有看到任何本机函数来强制传入值符合这些界限 接受的答案here很接近 但我想限制这些值 而不是仅仅强制执行它们 这是我到目前为止所
  • 新的 GHC 功能——是我想象的吗?

    我发誓我在最近的一组 GHC 发行说明中看到了一个新功能 但现在我找不到任何参考资料 是我的错觉 还是这个功能真的存在 这是与加载不完整的模块有关 据我所知 它允许您关闭由于未定义变量而导致的编译错误 当然 在运行时 如果您尝试实际执行 这
  • 自调用函数 javascript

    我在 Firefox 和 Chrome 中编写了一个自调用函数 但它不会调用 我写了一些东西 大意是 function alert THE 自调用函数在当前浏览器中不起作用吗 我确实包含了页面上所有必要的标签和所有其他代码 自调用函数 实际
  • 如何递归地遍历 PyGtk 中的所有 Gtk 子项?

    我想获得主窗口的所有 Gtk 子对象的递归列表pygtk 我怎么做 注意这些 Python GTK 小部件名称 Python 递归和返回语句 这是一个函数 它是 PHP 函数的一个端口按名称获取后代 子 小部件 PHP GTK 社区 htt
  • Jboss 5,类加载器和多个类实例

    我的申请有问题 为了恢复这个问题 我必须将应用程序从 jboss 4 迁移到 jboss 5 在战争部署过程中 我遇到了这样的错误 java lang LinkageError loader constraint violation whe
  • 如何在 CUDA 中(有效地)打包位?

    我有一个字节数组 其中每个字节都是 0 或 1 现在我想将这些值打包成位 以便 8 个原始字节占用 1 个目标字节 原始字节 0 进入位 0 字节 1 进入位 1 ETC 到目前为止 我在内核中有以下内容 const uint16 t ti
  • pandas 数据帧计数唯一列表

    如果数据框中列的类型是int float or string 我们可以得到它的独特值columnName unique 但是 如果此列是一个列表 例如 1 2 3 我怎样才能得到unique本专栏的 我认为你可以将值转换为元组 然后uniq
  • Twitter 登录失败

    当我在我的android应用程序中使用twitter登录时 我遇到了一些问题 错误日志如下 09 05 15 38 48 492 22119 22119 sg com conversant swiftlive E Twitter Faile
  • 获取压缩文件的 mime 类型

    获取上传文件的 mime 类型非常简单 echo mime content type fileatt tmp name 但是 我还想检查压缩文件中包含的文件的 mime 类型 解压我的文件后 循环遍历 zip 中的文件以及位置 i是当前文件
  • 哪种方法性能更好:.Any() 与 .Count() > 0?

    in the System Linq命名空间 我们现在可以扩展我们的IE可枚举拥有Any and Count 扩展方法 最近有人告诉我 如果我想检查一个集合中是否包含 1 个或多个项目 我应该使用 Any 扩展方法而不是 Count gt
  • 如何在 JEST 测试用例中检查全局获取的响应

    因此 我使用 jest 来测试我的节点函数 该函数调用 fetch APi 来获取数据 现在当我为其编写测试用例时 我收到如下错误 expect received resolves toEqual Matcher error receive
  • 安装 Crashlytics 时出错 - SSL 对等握手失败 [已关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 在尝试安装 Crashlytics 时 我收到此错误 安装 Crashlytics 3 7 2 usr bin curl f L o gt var folders 7x kp
  • std::sort 具有相等的元素会导致分段错误

    我有一个存储指针的容器 我试图根据指针指向的相应对象中的数据成员以非递增顺序对这些指针进行排序 就我而言 许 多对象可能具有相同的该数据成员值 下面是一段简短的代码来说明问题 对排序函数的调用给出了分段错误 奇怪的是 如果容器中有 16 个
  • WPF 组合框的 IsEditable 属性

    我在很多地方都读到 WPF 组合不支持自动完成 但我使用 IsEditable 属性并发现自动完成功能在 WPF 4 中工作 这是新添加的吗 不 不是 是否可编辑自 NET Framework 3 0 以来就已存在 自动完成通常意味着显示选
  • 如何在需要两个参数的函数的向量上使用 std::ranges ?

    我一直在尝试了解新的范围库 并尝试将一些更传统的 for 循环转换为函数代码 给出的示例代码参考参数非常简单易读 但是 我不确定如何将范围应用于点向量 该点向量需要查看 计算并比较每个 x 和 y 值 并在最后比较最大距离 struct P
  • Symfony 5(包括 4)使用 Gedmo Doctrine Extension for SoftDelete

    我尝试对 Symfony 5 中的某些实体使用软删除 使用 gedmo doctrine extensions 但遇到了一些麻烦 侦听器 SoftDeleteableListener 未添加到 EventManager 编译错误 App E