【问题标题】:Doctrine 2 base entities like those in doctrine 1?教义 2 中的基本实体与教义 1 中的基础实体一样吗?
【发布时间】:2013-08-18 11:22:11
【问题描述】:

我正在使用 Symfony2/Doctrine2 开始一个新项目,并使用 mapping:convert 和 mapping:import 命令从数据库生成我的实体。

我的实体很好,但我只有生成的实体。回到 Doctrine1/Symfony1,您的实体生成了两次:一次在学说文件夹中,一个几乎空的类只是扩展了第二个在学说/基础文件夹中的所有学说内部结构(getter/setter,字段...) 这样,您可以在第一个文件中添加您自己的方法,即使您再次生成实体(生成器仅修改了学说/基础文件),它们仍然保持不变。

我错过了什么吗?

【问题讨论】:

    标签: symfony doctrine-orm


    【解决方案1】:

    generate 命令只生成未定义的 getter 和 setter 并将它们附加到(实体)文件中。这意味着您的自定义 getter/setter 永远不会被覆盖。这能回答你的问题吗?

    【讨论】:

    • 不完全是:如果我从表中删除一行并再次使用映射:转换和映射:导入,生成的类文件会发生什么?它会被完全重写(甚至是我写的方法)吗?此外,“每个实体两个文件”系统有助于保持干净整洁,其中一个文件仅保留您编写的代码,另一个文件保留所有代码原则生成。
    • 映射命令只运行一次:docs.doctrine-project.org/projects/doctrine-orm/en/latest/…。在大多数情况下,您将编辑您的实体,然后使用教义:模式:更新来同步数据库表。这听起来像是退后一步,但这意味着不需要基类。
    • 我在symfony.com/doc/current/cookbook/doctrine/… 的三个命令和schema:update 命令上玩了一下。确实有点退步了。当您映射:导入到 yml 文件,然后在 yml 文件中更改列的名称时, generate:entities 修改实体类,将旧列保留为简单的字符串变量,并在末尾添加新列声明和 getter文件,将我自己的方法留在文件中... Doctrine 2 有一些好主意,但遗憾的是这部分效率不如以前。不过感谢您的澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2011-07-22
    • 2017-08-02
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多