我发现的所有教程都在创建新表时使用make:entity
自动创建了存储库
但是我已经按照以下命令从官方documentation导入现有数据库:php bin/console doctrine:mapping:import App\\Entity annotation --path=src/Entity
此命令似乎没有创建任何存储库...,并且文档中没有谈论生成存储库
我知道我可以手动创建一个,但是有命令自动生成它们吗?我有25张桌子。...会很有用
我很懒
编辑:我也尝试过php bin\console make:entity --regenerate
,但是我在所有表上都得到了no change
,并且没有创建存储库
答案 0 :(得分:12)
解决方案1
您只需运行
php bin\console make:entity --regenerate
这将提示并要求:
Enter a class or namespace to regenerate [App\Entity]:
只需按Enter或指定您的实体文件夹的位置,它将创建丢失的getter / setters和存储库。
--->警告:
如果未创建存储库,请确保您的实体中具有以下注释:
/**
* @ORM\Entity(repositoryClass="App\Repository\MyClassRepository")
*/
class MyClass
{
}
解决方案2
SymfonyMakerBundle允许您创建自己的制造者。因此,您可以创建一个名为make:repositories
的新文件,它将为/ Entity文件夹中找到的每个实体生成一个存储库。
为此,请在您的src/Maker/
目录中创建一个扩展AbstractMaker的类(MakeRepositories)。 (文档:https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html#creating-your-own-makers)
使用核心制造商make:entity
来帮助您创建新命令(因为它包含用于生成存储库的代码):https://github.com/symfony/maker-bundle/blob/master/src/Maker/MakeEntity.php
答案 1 :(得分:1)
如何从现有数据库生成实体
表名:CamelCase(例如:table_name将为TableName)
php bin/console doctrine:mapping:import App\\Entity annotation --path=src/Entity --filter="TableName"
如何生成实体
运行以下命令,它将创建实体文件。
php bin/console make:entity --regenerate
下一步,转到您的实体文件并添加@ORM\Entity repositoryClass
示例实体文件
/**
* XXXXXX
*
* @ORM\Table(name="XXXX")
* @ORM\Entity(repositoryClass="App\Repository\XXXXRepository")
*/
class XXXXX {
再次运行此命令,它将为您创建存储库。
php bin/console make:entity --regenerate
答案 2 :(得分:1)
从数据库生成实体类后,将以下注释添加到每个实体中:
@ORM\Entity(repositoryClass="App\Repository\ClassNameRepository")
要生成存储库类,请运行以下命令:
php bin/console make:entity --regenerate App
答案 3 :(得分:0)
不要太快地复制注释,我复制了注释,但是在我的情况下,实体是自动生成的,因此已经有一行ORM \ Repository,该行之后出现,请删除它或将其替换为解决方案>