symfony - 如何在 XML 文件格式学说 ORM 中添加级联参数
问题描述
据我了解,我需要在映射中添加一个“级联”参数。但我的映射是 XML 格式的。我找到了很多关于它的信息,但没有结果。请帮忙!
Мy 错误是:通过给定的关联图找到了多个非持久化新实体:\n\n * 通过关系“域\维护\维护#affectedRegions”找到了一个新实体,该关系未配置为对实体进行级联持久化操作: 域\AffectedRegion\AffectedRegion@0000000075384ba200000000535ab7f1。要解决这个问题:要么在这个未知实体上显式调用 EntityManager#persist(),要么配置级联在映射中保持此关联,例如 @ManyToOne(..,cascade={"persist"})。如果您无法找出导致问题的实体,请执行 'Domain\AffectedRegion\AffectedRegion#__toString()' 以获得线索。\n *
XML 失败:
<entity name="Domain\Maintenance\Maintenance" table="maintenances" repository-class="Infrastructure\Repositories\MaintenanceRepository">
<id name="id" type="integer" column="id">
<generator strategy="AUTO"/>
</id>
<field name="name" type="string"/>
<one-to-many field="affectedRegions" target-entity="Domain\AffectedRegion\AffectedRegion" mapped-by="Domain\Maintenance\Maintenance" />
<cascade>
<cascade-merge/>
</cascade>
</entity>
<entity name="Domain\AffectedRegion\AffectedRegion" table="affected_regions" repository-class="Infrastructure\Repositories\AffectedRegionRepository">
<id name="id" type="integer" column="id">
<generator strategy="AUTO"/>
</id>
<many-to-one field="region" target-entity="Domain\Region\Region" inversed-by="Domain\AffectedRegion\AffectedRegion">
<join-column name="region_id" referenced-column-name="id" />
<cascade>
<cascade-persist/>
</cascade>
</many-to-one>
<many-to-one field="maintenance" target-entity="Domain\Maintenance\Maintenance" inversed-by="Domain\AffectedRegion\AffectedRegion">
<join-column name="maintenance_id" referenced-column-name="id" />
<cascade>
<cascade-persist/>
</cascade>
</many-to-one>
<field name="vlans" type="string"/>
<field name="olts" type="string"/>
</entity>
<entity name="Domain\Region\Region" table="regions" repository-class="Infrastructure\Repositories\RegionRepository">
<id name="id" type="integer" column="id">
<generator strategy="AUTO"/>
</id>
<field name="name" type="string"/>
<field name="code" type="string"/>
<one-to-many field="affectedRegions" target-entity="Domain\AffectedRegion\AffectedRegion" mapped-by="Domain\Maintenance\Maintenance" />
</entity>
这是我的 FK:
$affectedRegionTable->addForeignKeyConstraint(
$regionTable,
['region_id'],
['id'],
['onUpdate' => 'CASCADE'],
'fk_affectedRegions_region_id'
);
$affectedRegionTable->addForeignKeyConstraint(
$regionTable,
['maintenance_id'],
['id'],
['onUpdate' => 'CASCADE'],
'fk_affectedRegions_maintenance_id'
);
我想建立的关系是:
维护 ← 一对多 → AffectedRegions ← 多对一 → 区域
解决方案
这是答案。添加级联参数的另一种方法:
<one-to-many field="affectedRegions" target-entity="Domain\AffectedRegion\AffectedRegion" mapped-by="maintenance">
<cascade>
<cascade-persist/>
<cascade-remove/>
</cascade>
</one-to-many>
推荐阅读
- sql - 在满足条件后 3 天内查找记录的 sql
- node.js - 计算机视觉阅读 api azure
- reactjs - 使用 Webpack 在 Phoenix 1.5 中未重新加载 React 组件
- python - 通过字符串列表对python中的重复数据框进行排序
- javascript - 如何使用 Create React App 设置 Storybook 以使用全局 sass mixins
- reactjs - 如何将图标放在 React Material Ui 文本字段中?
- javascript - 为mysql数据库调用制作一个笑话测试文件
- python - 有没有办法限制哪些用户在使用命令后响应不和谐机器人读取的内容?
- kibana - Kibana Watcher 是 AWS 的一部分吗
- mysql - 从具有相同 id 的一组值中选择最大值