安装orm-pack而非独立doctrine依赖时如何更新其包含的单个包
问题根源说明
symfony/orm-pack是Symfony提供的Flex元包,本身无实际业务代码,仅用于批量安装ORM生态依赖。symfony/orm-pack v2.1默认兼容doctrine/dbal ^2.13 || ^3.0范围,你无法直接升级是因为composer默认会锁定已安装的大版本范围,不会自动跨大版本更新。
可行方案
方案1:保留orm-pack,显式声明dbal版本
直接在项目根目录执行以下命令,手动指定要安装的doctrine/dbal版本:
composer require doctrine/dbal:"^3.1" -w
参数-w表示同步更新关联依赖,Composer会优先采用项目根目录composer.json中声明的版本约束,只要在orm-pack允许的兼容范围内即可正常安装,无需修改orm-pack的配置。
方案2:解压orm-pack,自主管理所有ORM依赖(更推荐长期维护场景)
如果你需要更灵活的控制所有Doctrine相关组件的版本,可以将orm-pack解压,之后就可以完全自主升级各个依赖:
- 执行Flex解压命令:
composer unpack symfony/orm-pack
该命令会自动将orm-pack包含的所有依赖(doctrine/orm、doctrine/dbal、doctrine/doctrine-bundle等)写入你项目的composer.json的require字段,同时自动移除symfony/orm-pack依赖。
2. 执行升级命令即可:
composer update doctrine/dbal -w
注意:doctrine/dbal 3.x存在跨大版本的向后不兼容改动,升级前请确认项目中用到的第三方依赖(如FOSRestBundle、Doctrine相关扩展)都已适配dbal 3.x,避免出现运行时报错。
内容的提问来源于stack exchange,提问作者petekaner
相关产品推荐
相关产品推荐

