【问题标题】:Symfony 4 getter setter not generated from existing databaseSymfony 4 getter setter 不是从现有数据库生成的
【发布时间】:2018-05-10 19:24:25
【问题描述】:

我知道要从 symfony 4 中的现有数据库生成实体,只需执行以下命令:

> php bin/console doctrine:generate:entities

但是这个命令不生成getter setter,只是从列生成变量。

当然我必须使用一些肮脏的工作来手动创建它。

可能是我错过了阅读文档,如何使用教义 symfony 4 从现有数据库生成实体 getter setter?

【问题讨论】:

标签: symfony doctrine


【解决方案1】:

要从现有数据库生成实体类,您需要让 Doctrine 内省数据库并生成相应的元数据文件。元数据文件描述了根据表字段生成的实体类。

> php bin/console doctrine:mapping:import App\\Entity annotation --path=src/Entity

此命令将在 src/Entity 中生成带有注释元数据的新 PHP 类 要生成缺少的 getter/setter 方法(或在必要时创建类),请运行:

> php bin/console make:entity --regenerate App

同时检查Official documentation

【讨论】:

    【解决方案2】:

    DOC says: "如果您喜欢手动添加新属性,make:entity 命令可以为您生成 getter 和 setter 方法:

    php bin/console make:entity --regenerate

    如果你做了一些改变,想重新生成所有的getter/setter方法,也可以通过--overwrite。”

    还要注意,对于 Symfony 3(我不关心 v4),doctrine:generate:entities 不适用于 protected 属性

    【讨论】:

      【解决方案3】:

      要从现有数据库中执行此操作,您可以使用逆向工程。请按以下步骤操作:

      1. 在 .env 文件中配置您的数据库

      2.1。从您配置的数据库创建实体:

      php bin/console doctrine:mapping:convert --from-database annotation ./src/Entity
      

      2.2。如果你想为一个特定的表创建实体:

      php bin/console doctrine:mapping:convert --from-database --filter="Tablename" annotation ./src/Entity
      
      1. 如果你使用 vim,你可以添加 getter 和 setter 安装 php-getter-setter.vim 插件并输入每个实体:

        :% InsertBothGetterSetter

      2. 您必须在每个实体中手动添加:

        命名空间应用\实体;

      【讨论】:

        猜你喜欢
        • 2018-05-21
        • 2012-08-01
        • 2020-05-19
        • 2015-03-22
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多