Orm Symfony3捆绑包内的yml实体映射,捆绑包外的实体类
我已经将我的代码划分为AppBundle和另一个业务逻辑名称空间,AppBundle将保存与框架相关的任何内容(包括条令内容) 所以基本上我有这样的文件结构:Orm Symfony3捆绑包内的yml实体映射,捆绑包外的实体类,orm,doctrine-orm,symfony,php-7,Orm,Doctrine Orm,Symfony,Php 7,我已经将我的代码划分为AppBundle和另一个业务逻辑名称空间,AppBundle将保存与框架相关的任何内容(包括条令内容) 所以基本上我有这样的文件结构: └── src ├── AppBundle │ └── Resources │ └── config │ └── doctrine │ ├── Attributes.orm.yml │ └── Use
└── src
├── AppBundle
│ └── Resources
│ └── config
│ └── doctrine
│ ├── Attributes.orm.yml
│ └── User.orm.yml
└── Logic
└── User
├── Attributes.php
└── User.php
映射如下所示:
Logic\User\User:
type: entity
table: user
id: (...)
fields: (...)
embedded:
attributes:
class: Logic\User\Attributes
和属性映射:
Logic\User\Attributes:
type: embeddable
fields: (...)
现在,当我尝试更新架构时,出现错误:
./sf doctrine:schema:update --dump-sql
[Doctrine\Common\Persistence\Mapping\MappingException]
Class 'AppBundle\Entity\Attributes' does not exist
基本上,映射是被找到并处理的,但是symfony忽略了我在映射中编写的类的名称空间,并尝试在bundle实体目录中找到它。我必须怎么做才能修复它?这里定义了条令映射配置: 特别是,您需要将dir设置为映射目录,并将前缀设置为实体名称空间 orm: 默认\实体\管理器:默认 自动生成代理类:%kernel.debug%
entity_managers:
default:
connection: default
mappings:
CeradOrgBundle: ~
CeradUserBundle: ~
CeradPersonBundle: ~
games:
connection: games
mappings:
CeradGameBundle:
dir: Resources/config/doctrine2
prefix: Cerad\Bundle\GameBundle\Doctrine\Entity
在上面的示例中,我创建了两个实体管理器。默认实体管理器使用标准布局处理各种捆绑包
游戏管理器显示如何自定义映射信息。在这种情况下,orm文件位于doctrine2目录中,而不是doctrine目录中
前缀是您感兴趣的内容。请注意,这些实体位于DoctrineEntity下,而不仅仅是普通实体目录
因此,设置前缀,就可以开始了。这里定义了条令映射配置: 特别是,您需要将dir设置为映射目录,并将前缀设置为实体名称空间 orm: 默认\实体\管理器:默认 自动生成代理类:%kernel.debug%
entity_managers:
default:
connection: default
mappings:
CeradOrgBundle: ~
CeradUserBundle: ~
CeradPersonBundle: ~
games:
connection: games
mappings:
CeradGameBundle:
dir: Resources/config/doctrine2
prefix: Cerad\Bundle\GameBundle\Doctrine\Entity
在上面的示例中,我创建了两个实体管理器。默认实体管理器使用标准布局处理各种捆绑包
游戏管理器显示如何自定义映射信息。在这种情况下,orm文件位于doctrine2目录中,而不是doctrine目录中
前缀是您感兴趣的内容。请注意,这些实体位于DoctrineEntity下,而不仅仅是普通实体目录
所以设置好前缀,你就可以出发了