最初にやったこと(失敗例)
composer.jsonのdoctrine/ormのバージョンを ~2.5
に指定して
$ composer update doctrine/orm
エラー。
- Can only install one of: doctrine/common[v2.5.0, v2.4.2].
- doctrine/orm v2.5.0 requires doctrine/common >=2.5-dev,<2.6-dev -> satisfiable by doctrine/common[v2.5.0]
- Installation request for doctrine/common == 2.4.2.0 -> satisfiable by doctrine/common[v2.4.2]
doctrine/commonは2.4を入れないといけないから2.5は入らないよ的なメッセージ。正直どこを直したらいいか途方に暮れる。
composerのエラーメッセージが不親切なのなんとかならないですかね??
うまくいった方法
doctrine/data-fixturesを更新
doctrine/commonの2.4.2.0というバージョンが選ばれてしまうのは、 doctrine/data-fixturesの1.0.0が <2.5-dev
を指定してる から。更に symfony/symfonyのcomposer.jsonでは、doctrine/data-fixturesが1.0.*で指定されている ため、まずdoctrine/data-fixturesを~1.1に(厳密には1.0.1以上で充分)上げる必要がある。
$ composer update doctrine/data-fixture
1.1になった。
doctrine/doctrine-bundleを更新
doctrine/doctrine-bundleも同様に、 v1.2までは <2.5-dev
つきだった。
よって1.3以上に更新する。
$ composer update doctrine/doctrine-bundle
1.5になった。
doctrine/common doctrine/dbalを更新
$ composer update doctrine/common doctrine/dbal
doctrine/common, doctrine/dbalが2.4→2.5になった。
doctrine/ormを更新
$ vi composer.json # doctrine/ormのバージョン指定を~2.5に変更
$ composer update doctrine/orm
doctrine/ormも無事2.5になった。
急いでいる人向け
最初から更新すべきパッケージがわかってたら、一度に全部更新できちゃう。
$ composer update doctrine/data-fixtures doctrine/doctrine-bundle doctrine/common doctrine/dbal doctrine/orm
Doctrine2.5の新機能(Embeddableとか)を使いたい人は、今後も確実に2.5以上が入ってくるようにcomposer.jsonのバージョン指定も ~2.5
に変更しておくのがオススメ。変更した後は
$ composer update --lock
を忘れずに。