从实体文件创建迁移
Create migration from entity file
我有一些table,已修改。为某些关系添加了一些注释:
cascade={"persist", "remove"}
在 SQL 中,字段仅引用另一个 table。
现在,我想创建一个迁移文件,运行bin/console doctrine:migrations:diff
,但是没有为此添加约束修改。
是否可以仅为该实体生成迁移文件?
Cascade persist 不会由您的数据库处理,因为它与准则如何使用 UnitOfWork 处理实体有关。
级联删除可以由学说或您的数据库管理。
与使用 onDelete
.
相比,使用 cascade={"remove"}
不会影响您的数据库模式
这就是您看不到任何更改的原因,因为没有要执行的 SQL 来更新您的实体架构。
基本上,当 $entityManager
用于 remove
实体时,cascade={"remove"}
只会被条令及其工作单元使用。
这就是为什么如果您在 SQL 中执行删除您的条目之一的原始查询,级联选项将不会执行任何操作,如果您使用原始 sql 而不是,则确实会导致错误学说 DQL.
因此,如果您不在代码中使用任何会删除条目的原始 sql,那么什么都不做就可以了。
否则,您可以使用 onDelete 来修改您的数据库结构。
你只需要为 remove
这样做:
cascade={"persist"}, onDelete="CASCADE"
如果您使用它,请务必检查documentation以了解更多信息。
我有一些table,已修改。为某些关系添加了一些注释:
cascade={"persist", "remove"}
在 SQL 中,字段仅引用另一个 table。
现在,我想创建一个迁移文件,运行bin/console doctrine:migrations:diff
,但是没有为此添加约束修改。
是否可以仅为该实体生成迁移文件?
Cascade persist 不会由您的数据库处理,因为它与准则如何使用 UnitOfWork 处理实体有关。
级联删除可以由学说或您的数据库管理。
与使用 onDelete
.
cascade={"remove"}
不会影响您的数据库模式
这就是您看不到任何更改的原因,因为没有要执行的 SQL 来更新您的实体架构。
基本上,当 $entityManager
用于 remove
实体时,cascade={"remove"}
只会被条令及其工作单元使用。
这就是为什么如果您在 SQL 中执行删除您的条目之一的原始查询,级联选项将不会执行任何操作,如果您使用原始 sql 而不是,则确实会导致错误学说 DQL.
因此,如果您不在代码中使用任何会删除条目的原始 sql,那么什么都不做就可以了。
否则,您可以使用 onDelete 来修改您的数据库结构。
你只需要为 remove
这样做:
cascade={"persist"}, onDelete="CASCADE"
如果您使用它,请务必检查documentation以了解更多信息。