Symfony 4和Doctrine,如何在Map后自动生成存储库?

fafcakar  于 2022-11-30  发布在  其他
关注(0)|答案(4)|浏览(152)

我找到的所有教程都在创建新表时使用make:entity自动创建了存储库
但我一直在使用以下命令从现有数据库导入正式的documentationphp bin/console doctrine:mapping:import App\\Entity annotation --path=src/Entity
此命令似乎不会创建任何存储库...并且文档中也没有提到生成存储库
我知道我可以手动创建一个,但是有没有一个命令可以自动生成它们?我有25个表......这将非常有用
懒我
编辑:我还尝试了php bin\console make:entity --regenerate,但在所有表上都得到了no change,并且没有创建存储库

oxosxuxt

oxosxuxt1#

解决方案1

您只需运行

php bin/console make:entity --regenerate

这将提示并询问:

Enter a class or namespace to regenerate [App\Entity]:

只需按Enter键或指定实体文件夹的位置,它将创建缺少的getter/setter和Repositories。

---〉警告:

如果它没有创建存储库,请确保在实体中有以下注解:

/**
 * @ORM\Entity(repositoryClass="App\Repository\MyClassRepository")
 */
class MyClass
{

}

如果缓存不起作用,你可能还想清空缓存(正如@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.php

guykilcj

guykilcj2#

从数据库生成实体类后,将以下注解添加到每个实体:

@ORM\Entity(repositoryClass="App\Repository\ClassNameRepository")

要生成存储库类,请运行以下命令:

php bin/console make:entity --regenerate App
7z5jn7bk

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

示例实体文件

/**
 * XXXXXX
 *
 * @ORM\Table(name="XXXX")
 * @ORM\Entity(repositoryClass="App\Repository\XXXXRepository")
 */

class XXXXX {

再次运行此命令,它将为您创建存储库。
php bin/console make:entity --regenerate

k97glaaz

k97glaaz4#

不要复制注解太快,我复制了注解,但在我的情况下,实体是自动生成的,所以已经有一行ORM\Repository,它出现在之后,删除它或用解决方案替换它

相关问题