我在Symfony框架中的表单集合的软删除项目有问题
我想添加和删除与Symfony表单集合相关的项目,如果我从集合中删除项目,则该项目必须从关系记录中被软删除
带有下面的图片,您可以想象关系
这是我在Symfony表单中的表单集合
Main form
+
|
ProductType+
| |
| |
| PackagesType+
| |
| |
| PackageProductsType
|
|
+
基于Symfony example for form collections,在前端使用JS添加和删除包装产品
我的问题是,当我通过激活实体注释中的orphanRemoval = true从package_product
中完全删除时,一切正常,但记录已完全删除,我想根据我的建议删除记录,但是当我在下面更改时Package
实体中的功能
public function removePackageProduct(PackageProduct $packageProduct): self
{
if ($this->packageProducts->contains($packageProduct)) {
$this->packageProducts->removeElement($packageProduct);
// set the owning side to null (unless already changed)
if ($packageProduct->getPackage() === $this) {
$packageProduct->setPackage(null);
}
}
return $this;
}
总是在顶部函数中,我在packageProducts
中得到最后一条记录,而当我删除此行$packageProduct->setPackage(null);
以禁用记录中的丢失数据并将其替换为$packageProduct->setDeletedAt(new \Datetime());
来设置已删除的项目时,在保存的记录中删除了从数据库中删除的记录并添加了一条新记录,其中填充了最后一条记录数据,并在datetime删除了。
例如:
PackageProduct
记录在删除第一项之前:
+----+------------+------------+--------+-----------+
| ID | Product_id | package_id | amount | deletedAt |
+----+------------+------------+--------+-----------+
| 1 | 10 | 1 | 3 | |
| 2 | 11 | 1 | 4 | |
| 3 | 12 | 1 | 5 | |
+----+------------+------------+--------+-----------+
[PackageProduct
删除第一项后的记录:
+----+------------+------------+--------+-----------+
| ID | Product_id | package_id | amount | deletedAt |
+----+------------+------------+--------+-----------+
| 2 | 11 | 1 | 4 | |
| 3 | 12 | 1 | 5 | |
| 4 | 12 | 1 | 5 |2020-1-20..|
+----+------------+------------+--------+-----------+
但是删除第一项后我希望有PackageProduct
条记录:
+----+------------+------------+--------+-----------+
| ID | Product_id | package_id | amount | deletedAt |
+----+------------+------------+--------+-----------+
| 1 | 10 | 1 | 3 |2020-1-20..|
| 2 | 11 | 1 | 4 | |
| 3 | 12 | 1 | 5 | |
+----+------------+------------+--------+-----------+
如何解决此问题以获得预期的结果?
FOREIGN KEYs
妨碍您的情况。这里有许多提示:许多映射表:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table