LoginSignup
7
6

More than 5 years have passed since last update.

ComposerでSymfonyに同梱されたDoctrineのバージョンを2.4→2.5に上げる

Posted at

最初にやったこと(失敗例)

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

を忘れずに。

参考リンク

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6