【发布时间】:2018-05-10 19:24:25
【问题描述】:
我知道要从 symfony 4 中的现有数据库生成实体,只需执行以下命令:
> php bin/console doctrine:generate:entities
但是这个命令不生成getter setter,只是从列生成变量。
当然我必须使用一些肮脏的工作来手动创建它。
可能是我错过了阅读文档,如何使用教义 symfony 4 从现有数据库生成实体 getter setter?
【问题讨论】:
我知道要从 symfony 4 中的现有数据库生成实体,只需执行以下命令:
> php bin/console doctrine:generate:entities
但是这个命令不生成getter setter,只是从列生成变量。
当然我必须使用一些肮脏的工作来手动创建它。
可能是我错过了阅读文档,如何使用教义 symfony 4 从现有数据库生成实体 getter setter?
【问题讨论】:
要从现有数据库生成实体类,您需要让 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
【讨论】:
DOC says: "如果您喜欢手动添加新属性,make:entity 命令可以为您生成 getter 和 setter 方法:
php bin/console make:entity --regenerate
如果你做了一些改变,想重新生成所有的getter/setter方法,也可以通过--overwrite。”
还要注意,对于 Symfony 3(我不关心 v4),doctrine:generate:entities 不适用于 protected 属性
【讨论】:
要从现有数据库中执行此操作,您可以使用逆向工程。请按以下步骤操作:
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
如果你使用 vim,你可以添加 getter 和 setter 安装 php-getter-setter.vim 插件并输入每个实体:
:% InsertBothGetterSetter
您必须在每个实体中手动添加:
命名空间应用\实体;
【讨论】: