symfony - Symfony:在链配置的命名空间中找不到类 XYZ
问题描述
现有的问题没有帮助。我仍在学习 Symfony 并建立一个现有项目。试图从我的应用程序目录运行教义固定装置。
./app/console doctrine:fixtures:load --env test
运行它会给我以下错误
运行命令“doctrine:fixtures:load --env test --em default”时抛出错误。消息:“在链配置的命名空间 _XyzProjectName\CalendarContext\Domain\Model、Integration\GetFeedbackBundle\Model、_XyzProjectName\AccountingProcessContext\Domain\Model、_XyzProjectName\CaseContext\Domain 中找不到类 'ClientPortal\GenericBundle\Document\Accountant'” {"exception":"[object] (Doctrine\Common\Persistence\Mapping\MappingException(code: 0): 在链配置的命名空间_XyzProjectName\CalendarContext\Domain\ 中找不到类'ClientPortal\GenericBundle\Document\Accountant'模型,Integration\GetFeedbackBundle\Model,_XyzProjectName\AccountingProcessContext\Domain\Model,
尝试持久化类对象时抛出此异常
'ClientPortal\GenericBundle\Document\Accountant'
这是我在 config.yml 中的教义
doctrine:
dbal:
driver: pdo_pgsql
host: '%database_host%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
mappings:
CalendarBundle:
prefix: '_XyzProjectName\CalendarContext\Domain\Model'
IntegrationGetFeedbackBundle:
prefix: 'Integration\GetFeedbackBundle\Model'
AccountingProcessBundle:
prefix: '_XyzProjectName\AccountingProcessContext\Domain\Model'
CaseBundle:
prefix: '_XyzProjectName\CaseContext\Domain'
GenericBundle:
type: "annotation"
prefix: 'ClientPortal\GenericBundle\Document'
dir: 'src'
is_bundle: false
引发此异常的代码段
$account = new ClientPortal\GenericBundle\Document\Accountant();//full namespace added for clarity - also this file lies in the same directory structure.
$account->setSfAccountantId($accountantId);
$account->setUsername($username);
$manager = new ObjectManager;
$manager->persist( $account ); //This throws the above mentioned exception
我的想法是,文件 ClientPortal\GenericBundle\Document\Accountant.php 正在自动加载,因为在其对象实例化时没有抛出异常。但是,配置或映射缺少一些东西,因为学说不知道如何持久化其对象。
[源码][1] 会计类
在 AppKernel 下注册的 GenericBundle(s)
new Website\GenericBundle\WebsiteGenericBundle(),
new Admin\GenericBundle\AdminGenericBundle(),
new ClientPortal\GenericBundle\ClientPortalGenericBundle(),
new TaxApp\GenericBundle\TaxAppGenericBundle(),
解决方案
因此,正如我在评论中建议的那样 - 尝试ClientPortal\GenericBundle\Document\
在您的学说配置文件中添加命名空间到映射,如下所示:
#...
orm:
auto_generate_proxy_classes: "%kernel.debug%"
mappings:
# ...
ClientPortalGenericBundle:
type: annotation
prefix: 'ClientPortal\GenericBundle\Document\'
dir: '%kernel.root_dir%/src/ClientPortal/GenericBundle/Document/'
#is_bundle: false
auto_mapping: true
推荐阅读
- regex - 只需要字母数字(没有纯数字或字母)的正则表达式并限制为 10 个字符?
- excel - 创建基于一行数据(日期)计算的 VBA 代码,如果日期已过或在 2 周内,则会弹出一个窗口
- node.js - 无法使用回调获取结果
- excel-formula - 基于日期的成功率
- ios - Appium - iOS - 写入 xctestrun 文件时出错:错误域 = NSCocoaErrorDomain 代码 = 4
- powershell - 如何判断路径是文件还是目录?
- python - CartPole-v0 的意外观察空间
- javascript - 如何让 React 父组件在没有表单的情况下访问子状态(使用沙盒)?
- javascript - 一旦组件在 react 中渲染,我们可以修改 div 吗?
- java - 在不使用意图的情况下单击按钮发送 gmail