Bundle以外の場所にDoctrineのEntityを配置する

Bundle以外の場所にDoctrineのEntityを配置する

November 6, 2015,
tags: symfony doctrine2 php


このエントリーをはてなブックマークに追加

Symfony2を使っていて、どうしてもBundleではないところにEntityを置きたい場合がでてきます。
昔はそんなこと出来ないと勝手に思い込んでいましたが、できるんですよね

設定方法

config.ymlのdoctrine.ormの設定で、簡単に設定できます。

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
    mappings:
        hoge:
            is_bundle: false
            alias: Hoge
            type: annotation
            dir: %kernel.root_dir%/../src/Hoge/Entity
            prefix: Hoge\Entity

これだけです。

Controllerでリポジトリを取得してみる。

aliasHogeと指定したので、Hogeのあとにsrc/Hoge/Entityの中に作ったエンティティ名を指定すれば、リポジトリが取得できます。

$this->getDoctrine()->getRepository('Hoge:Fuga');

最後に

他にも様々設定ができるので、公式のドキュメントを確認してみることをおすすめします。

DoctrineBundle Configuration (“doctrine”)

comments powered by Disqus