php - 当安装包而不是单个学说依赖项时,如何更新 orm-pack 的单个包?
问题描述
在 Symfony 5.3 应用程序中,我正在使用orm-pack
并且当使用 composer outdated 检查过时的依赖项时,我看到它doctrine/dbal
有一个新版本,但我无法升级它,因为它是在 ORM 包中定义的。
$ > composer outdated
Color legend:
- patch or minor release available - update recommended
- major release available - update possible
doctrine/dbal 2.13.2 3.1.1 Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.
有没有办法使用新的包版本orm包?
这是我需要的作曲家 JSON 文件的一部分:
"require": {
"php": "^8.0.09",
"ext-ctype": "*",
"ext-iconv": "*",
"ext-json": "*",
"friendsofsymfony/rest-bundle": "^3.0",
"jms/serializer-bundle": "^3.10",
"nelmio/api-doc-bundle": "^4.4",
"symfony/console": "5.3.*",
"symfony/flex": "^1.3.1",
"symfony/framework-bundle": "5.3.*",
"symfony/http-kernel": "5.3.*",
"symfony/messenger": "5.3.*",
"symfony/monolog-bundle": "^3.5",
"symfony/orm-pack": "^2.1",
"symfony/property-info": "5.3.*",
"symfony/runtime": "5.3.*",
"symfony/translation": "5.3.*",
"symfony/validator": "5.3.*",
"symfony/yaml": "5.3.*"
},
"require-dev": {
"behat/mink": "dev-master",
"friends-of-behat/mink-browserkit-driver": "^1.5",
"friends-of-behat/mink-extension": "2.5",
"friends-of-behat/symfony-extension": "^2.0",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^0.12.94",
"phpstan/phpstan-doctrine": "^0.12.42",
"phpstan/phpstan-phpunit": "^0.12.21",
"phpunit/phpunit": "^9"
},
解决方案
看起来你是orm-pack
在旧版本的 Symfony Flex 下安装的。
如今,当你require
打包时,你会得到这样的东西:
[...]
Unpacked symfony/profiler-pack dependencies
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 0 installs, 0 updates, 1 removal
- Removing symfony/profiler-pack (v1.0.5)
现在,Flex 自动将包“解包”到包提供的不同依赖项中,因此您可以直接管理它们。
由于这没有发生在您身上,现在您需要:
确保您拥有当前版本的 Symfony Flex(例如 1.13.4,截至目前的最新版本)。
通过运行“解包”包:
composer unpack orm-pack
这将删除orm-pack
依赖项,并将其替换为包提供的依赖项。完成后,您将能够独立管理依赖项,因为它们将列在您的composer.json
文件中,而不是symfony/orm-pack
.
关于具体情况doctrine/dbal
,截至今日:
请注意,doctrine/dbal
在任何情况下,这都不是您项目的直接依赖项,而是orm-pack
. 由于其中一些依赖项仍锁定到版本 ^2,因此您暂时无法更新到 3。
例如,对于由 提供的软件包orm-pack
:
包裹 | 需要 dbal 版本 |
---|---|
教义/教义捆绑 | ^2.9.0|^3.0 |
学说/规则 | ^2.13.0 |
学说/学说迁移捆绑 | ^2.11(通过学说迁移) |
所以你会注意到只有doctrine-bundle
声明为 DBAL 3 做好了准备。通过解压依赖项,你至少可以直接管理它们,这要好得多,但你还不能跳转到 DBAL 3。您将在以后的日期,然后这部分答案将变得过时。
推荐阅读
- ios - UITableView 嵌套在 UICollectionViewCell 中,没有边距
- cordova - Ionic 4 cordova cordova-plugin-facebook4:“FacebookOriginal”类型中缺少属性“provide”
- c - 如何在 C 中使用 setenv 避免此错误?
- vba - Excel 子程序,将逗号分隔的值转置为行
- shopify - Shopify - 选择产品选项时在 url 中更改变体 ID
- android - Facebook SDK 上传视频 - android 应用程序
- rest - 使用 GraphQL 的真正好处是什么?
- php - 递归函数不会在返回时终止
- php - 尝试使用 nextRowset 得到两个结果
- r - r 从缺失值上方的单元格中复制值