composer update后Symfony报错App:ConfigSystem类不存在如何修复
问题成因
App:ConfigSystem是Doctrine的实体别名简写语法,旧版本doctrine/doctrine-bundle默认会为App命名空间下的实体自动注册对应别名,不需要手动配置。执行composer update后如果doctrine/doctrine-bundle升级到较新版本,默认不再自动注册未显式声明的实体别名,就会抛出找不到App:ConfigSystem类的错误。
当前Doctrine官方推荐使用实体类名::class的方式获取实体仓库,但如果项目内旧写法存量大,不需要批量修改业务代码,补全对应配置即可恢复旧写法兼容。
报错界面如下:
兼容操作步骤
- 打开项目内Doctrine配置文件,默认路径为
config/packages/doctrine.yaml - 在
orm配置节点下补充显式实体映射规则,注册App别名即可,原有其他配置不需要改动,参考配置如下:
doctrine: orm: # 此处保留原有所有orm配置,仅新增下面的mappings节点 mappings: App: is_bundle: false # 实体定义格式:注解写法填annotation,PHP8属性写法填attribute,yml/xml驱动对应调整值 type: annotation # 实体文件存放的目录路径 dir: '%kernel.project_dir%/src/Entity' # 实体类对应的根命名空间 prefix: 'App\Entity' # 要兼容的别名前缀,对应旧写法里App:xxx的App标识 alias: App
- 配置保存完成后,执行缓存清除命令,所有旧写法即可正常运行:
php bin/console cache:clear
提示:如果项目实体不是统一存放在
src/Entity目录,或者实体根命名空间不是App\Entity,根据项目实际结构调整dir和prefix参数即可。
内容的提问来源于stack exchange,提问作者cLx
相关产品推荐
相关产品推荐

