我找到的所有教程都在创建新表时使用make:entity
自动创建了存储库
但我一直在使用以下命令从现有数据库导入正式的documentation:php bin/console doctrine:mapping:import App\\Entity annotation --path=src/Entity
此命令似乎不会创建任何存储库...并且文档中也没有提到生成存储库
我知道我可以手动创建一个,但是有没有一个命令可以自动生成它们?我有25个表......这将非常有用
懒我
编辑:我还尝试了php bin\console make:entity --regenerate
,但在所有表上都得到了no change
,并且没有创建存储库
4条答案
按热度按时间oxosxuxt1#
解决方案1
您只需运行
这将提示并询问:
只需按Enter键或指定实体文件夹的位置,它将创建缺少的getter/setter和Repositories。
---〉警告:
如果它没有创建存储库,请确保在实体中有以下注解:
如果缓存不起作用,你可能还想清空缓存(正如@Pavel Petrov在评论中指出的那样)
解决方案2
SymfonyMakerBundle允许您创建自己的maker,因此您可以创建一个名为
make:repositories
的新maker,它将为/Entity文件夹中的每个实体生成一个存储库。为此,请在
src/Maker/
目录中创建一个扩展AbstractMaker的类(MakeRepositories)。(文档:https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html#creating-your-own-makers)使用核心maker
make:entity
来帮助您创建新命令(因为它包含生成存储库的代码):https://github.com/symfony/maker-bundle/blob/master/src/Maker/MakeEntity.phpguykilcj2#
从数据库生成实体类后,将以下注解添加到每个实体:
要生成存储库类,请运行以下命令:
7z5jn7bk3#
如何从现有数据库生成实体
表名称:驼峰字(例如:table_name将为表名)
php bin/console doctrine:mapping:import App\\Entity annotation --path=src/Entity --filter="TableName"
如何生成实体
运行下面的命令,它将创建实体文件。
php bin/console make:entity --regenerate
接下来,转到实体文件并添加
@ORM\Entity repositoryClass
示例实体文件
再次运行此命令,它将为您创建存储库。
php bin/console make:entity --regenerate
k97glaaz4#
不要复制注解太快,我复制了注解,但在我的情况下,实体是自动生成的,所以已经有一行ORM\Repository,它出现在之后,删除它或用解决方案替换它