我试图收集一些关于以下方法的信息,以便在删除父实体时自动删除子实体。似乎最常见的方法是使用这三个注释中的一个:cascade={“remove”}
或orphanremoval=true
或ondelete=“cascade”
。
我对第三个有点困惑:ondelete=“cascade”
,因为在教义官方文件中关于这个问题的解释非常少),我希望有人能证实我从网上的研究和经验中收集和了解的以下信息...
它是做什么的?
cascade={“remove”}
==>当拥有方实体为。即使您与其他拥有方实体处于manytomany
中。
OneTomany
或ManyTomany
关系中使用)orphanremoval=true
==>当拥有方实体是且它不再连接到任何其他拥有方实体时,将删除反向方的实体。(参考条令official_doc
OneToOne
、OneToMany
或ManyToMany
ondelete=“Cascade”
==>这将向数据库中的外键列添加Delete=“Cascade”
其他信息
cascade={“remove”}
完全绕过任何外键ondelete=cascade。(参考docratiine_official_doc)OlphanRemove
和Cascade={“Remove”}
在反向实体类中定义。ondelete=“cascade”
在所有者实体中定义@orm\joincolumn(ondelete=“cascade”)
并让条令处理列名/**
* @OneToMany(targetEntity="Phonenumber", mappedBy="contact", cascade={"remove"})
*/
protected $Phonenumbers
/**
* @OneToMany(targetEntity="Phonenumber", mappedBy="contact", orphanRemoval=true)
*/
protected $Phonenumbers
onDelete=“级联”
/**
* @ManyToOne(targetEntity="Contact", inversedBy="phonenumbers")
* @JoinColumn(name="contact_id", referencedColumnName="contact_id", onDelete="CASCADE")
*/
protected $contact;
ondelete=“cascade”
由数据库本身管理。cascade={“remove”}
由条令管理。
ondelete=“cascade”
速度更快,因为操作是在数据库级别执行的,而不是根据条令执行的。删除是由数据库服务器而不是条令执行的。对于cascade={“remove”}
,条令必须管理实体本身,并将执行额外的检查,以查看它是否没有任何其他拥有实体。当不存在其他实体时,它将删除该实体。但这会造成开销。
CASCADE={“删除”}
OphanRemoval=“true”
上面的两个选项有什么区别?什么时候选择每一个选项更可取?
Cascade 是一个 JavaScript/TypeScript 库,用来创建流行的用户界面,组合 Reactive 视图模型和功能性的 DOM 组件实现无缝的数据流展示。 在线演示:https://cascade.rocks/
Cascade 是一个 JavaScript/TypeScript 库,用来创建流行的用户界面,组合 Reactive 视图模型和功能性的 DOM 组件实现无缝的数据流展示。 在线演示:https://cascade.rocks/
一个简单,优雅,且支持IE6+的CSS框架。
Cascade 是 paypal 上能够执行常见模型、方便对象、实现类、实用程序和用于 Scala 应用程序和服务器的包的集合库。它的设计初衷是为了: 能够很好的与 Scala 和 Typesafe 库一起运行 能够脱离其他库而独立运行 能够很好的定义功能 最大化的减少外部依赖数量 Related to (4) - 在建立自己的库之前使用 Scala 标准库功能
lazy 查询数据的时候,有些字段并不需要返回。这样能够节省内存,而且取数据的速度会更快一些。 虽然BuguQuery查询中的方法returnFields()和notReturnFields(),可以指定查询的时候返回、不返回哪些字段,但如果每次查询的时候都要特别指定,那会非常麻烦。有没有简便一点的方法呢?用lazy属性即可实现。 @Property、@Embed、@EmbedList都有lazy