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
我尝试这样做,但没有成功。
看起来您正在按域拆分代码。
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 命名空间来组织 代码而不是捆绑包。