Maker Bundle 仅支持注释映射

Only annotation mapping is supported by Maker Bundle

我已经更改了我的 Symfony 项目的配置,以便在我的实体中使用 PHP 属性和 Doctrine。我对此感到非常高兴并想尝试一下。

我已将 doctrine.yamlannotation 更改为 attribute

 orm:
    auto_generate_proxy_classes: true
    naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
    auto_mapping: true
    mappings:
        App:
            is_bundle: false
            type: attribute
            dir: '%kernel.project_dir%/src/Entity'
            prefix: 'App\Entity'
            alias: App

并在我的实体中使用属性

#[ORM\Entity(UserRepository::class)]
class User implements UserInterface
{
    #[ORM\Id()]
    #[ORM\GeneratedValue()]
    #[ORM\Column(type: "integer")]
    private ?int $id;

    #[ORM\Column(type: "string", length: 180, unique: true)]
    private ?string $email;

    #[ORM\Column(type: "json")]
    private array $roles = [];
}

使用此配置,我的 php bin/console do:sc:up -f 运行良好。

但是当我尝试使用 php bin/console make:entity 生成一个新实体时,我得到了这个错误:

[ERROR] Only annotation mapping is supported by make:entity, but the App\Entity\Toto class uses a different format. If you would like this command to generate the properties & getter/setter methods, add your mapping
configuration, and then re-run this command with the --regenerate flag.

好像还不能用maker来生成带属性的实体。 有没有人找到解决此问题的方法,还是我们只能等待新版本?

目前我正在使用:

"doctrine/annotations": "1.13.1"
"doctrine/doctrine-bundle": "2.4.2",
"doctrine/orm": "2.9.3"
"symfony/maker-bundle": "1.31.1",

目前不支持。虽然我 120% 确定开发人员 已经知道 关于 PHP 属性,但已创建 an issue,并且此功能将尽可能完成.

同时,您可以手动创建您的实体,而无需使用制造商(并不难),甚至可以使用 Rector to convert Annotations to Attributes. There is a built-in rule 之类的工具。