Mor*_*eza 8 php mysql soft-delete symfony-forms symfony4
我在 Symfony 框架中使用表单集合软删除项目有问题
我想添加和删除与 Symfony 表单集合相关的项目,如果我从集合中删除项目,此项目必须从关系记录中软删除
用下图你可以想象关系
这是我在 Symfony 表单中的表单集合
Main form
+
|
ProductType+
| |
| |
| PackagesType+
| |
| |
| PackageProductsType
|
|
+
Run Code Online (Sandbox Code Playgroud)
基于表单集合的Symfony示例在前端使用JS添加和删除包产品
我的问题是,当我在实体的注释中package_product通过激活orphanRemoval=true完全删除时,每件事都运行良好,但记录完全删除,我想根据我的建议软删除记录,但是当我在Package实体中更改以下功能时
Main form
+
|
ProductType+
| |
| |
| PackagesType+
| |
| |
| PackageProductsType
|
|
+
Run Code Online (Sandbox Code Playgroud)
始终在顶部功能中,我获取最后一条记录packageProducts,当我删除此行$packageProduct->setPackage(null);以禁用记录中的丢失数据并将其替换$packageProduct->setDeletedAt(new \Datetime());为设置已删除项目时,在保存的记录中删除记录从数据库中删除并添加了一条新记录,其中填充了最后一条记录数据并删除了约会时间。
例如:
PackageProduct 删除第一项之前的记录:
+----+------------+------------+--------+-----------+
| ID | Product_id | package_id | amount | deletedAt |
+----+------------+------------+--------+-----------+
| 1 | 10 | 1 | 3 | |
| 2 | 11 | 1 | 4 | |
| 3 | 12 | 1 | 5 | |
+----+------------+------------+--------+-----------+
Run Code Online (Sandbox Code Playgroud)
PackageProduct 删除第一项后的记录:
+----+------------+------------+--------+-----------+
| ID | Product_id | package_id | amount | deletedAt |
+----+------------+------------+--------+-----------+
| 2 | 11 | 1 | 4 | |
| 3 | 12 | 1 | 5 | |
| 4 | 12 | 1 | 5 |2020-1-20..|
+----+------------+------------+--------+-----------+
Run Code Online (Sandbox Code Playgroud)
但我期望PackageProduct删除第一项后的记录:
+----+------------+------------+--------+-----------+
| ID | Product_id | package_id | amount | deletedAt |
+----+------------+------------+--------+-----------+
| 1 | 10 | 1 | 3 |2020-1-20..|
| 2 | 11 | 1 | 4 | |
| 3 | 12 | 1 | 5 | |
+----+------------+------------+--------+-----------+
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题以获得预期的结果?