Symfony 4 getter setter不是从现有数据库

时间:2018-05-10 19:24:25

标签: symfony doctrine

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

> php bin/console doctrine:generate:entities

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

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

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

3 个答案:

答案 0 :(得分:5)

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

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

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

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

同时检查Official documentation

答案 1 :(得分:1)

DOC says: "如果您希望手动添加新属性,则make:entity命令可以生成getter&你的setter方法:

php bin/console make:entity --regenerate

如果你做了一些改变并希望重新生成所有的getter / setter方法,那么也要传递--overwrite。"

另请注意,使用Symfony 3(我不是关于v4),doctrine:generate:entities不适用于protected属性

答案 2 :(得分:0)

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

  1. 在.env文件中配置数据库
  2. 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,你可以添加安装php-getter-setter.vim插件的getter和setter并输入每个实体:

      :%InsertBothGetterSetter

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

      命名空间App \ Entity;