symfony 学说 orm 映射通配符

问题描述 投票:0回答:1

Symfony 6.3

我想将实体放置在多个子文件夹中,现在我有这样的配置:

doctrine:
orm:
    auto_generate_proxy_classes: '%kernel.debug%'
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
    mappings:
        App\Core:
            is_bundle: false
            type: attribute
            dir: '%kernel.project_dir%/src/Core/Entity'
            prefix: 'App\Core\Entity'
            alias: AppCore
        App\Shared:
            is_bundle: false
            type: attribute
            dir: '%kernel.project_dir%/src/Shared/Entity'
            prefix: 'App\Shared\Entity'
            alias: AppShared
        App\Chat:
            is_bundle: false
            type: attribute
            dir: '%kernel.project_dir%/src/Chat/Entity'
            prefix: 'App\Chat\Entity'
            alias: AppChat
        App\User:
            is_bundle: false
            type: attribute
            dir: '%kernel.project_dir%/src/User/Entity'
            prefix: 'App\User\Entity'
            alias: AppUser

现在,如果我在子文件夹中添加一个带有反实体的新“模块”,我应该添加一个新配置。

有什么方法可以将通配符应用于此配置吗?像这样的东西:

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

我尝试这样做,但没有成功。

symfony orm doctrine
1个回答
0
投票

看起来您正在按域拆分代码。

Core\
Core\Entity\
Shared\
Shared\Entity\
Chat\
Chat\Entity\
User\
User\Entity\

这个架构看起来像旧的 Symfony 捆绑系统,如果你想简化你的 symfony 配置,你最好将这些目录声明为捆绑。

只需添加 1 个文件和一些配置:

核心\CoreBundle.php

<?php

namespace App\Core;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class CoreBundle extends Bundle
{
}

及其在 config/bundles.php 中的声明

<?php

return [
    // ...
    App\Core\CoreBundle::class => ['all' => true],
];

从此处将映射配置为捆绑包,Doctrine 将自动在

Core\Entity
目录中查找实体。

mappings:
    App\Core:
        is_bundle: true
        type: attribute
        alias: AppCore

您可以在此处阅读有关捆绑包的更多信息

请注意,Symfony 不建议创建捆绑包,可重用组件除外。

不要创建任何捆绑包来组织您的应用程序逻辑

什么时候 Symfony 2.0 发布,应用程序使用捆绑包来划分它们的 代码转换成逻辑特征:UserBundle、ProductBundle、InvoiceBundle、 等等。但是,捆绑包是可以重复使用的东西 一个独立的软件。

如果您需要在项目中重用某些功能,请创建一个捆绑包 对于它(在私人存储库中,不要将其公开)。 对于应用程序代码的其余部分,请使用 PHP 命名空间来组织 代码而不是捆绑包。

© www.soinside.com 2019 - 2024. All rights reserved.