Posted at

Doctrineのマイグレーションで、ビューなどのテーブルを無視する方法

Doctrineのエンティティを使って、DBのviewテーブルにアクセスしていたときの問題です。

例えば、「view_memo」というテーブルが存在していて、ViewMemoエンティティを使っているとします。普通に動くのですが、マイグレーションするときに問題が出ました。

viewテーブルが存在しないと判断されて、マイグレーションでview_memoテーブルを作成しようとします。


解決方法

いろいろ調べて、結局Symfonyのマニュアルに解決方法がありました。

まずは、doctrineの設定ファイルを見つけます。

config/packages/doctrine.yaml

ここに、schema_filterの一行を加えます。

doctrine:

dbal:
schema_filter: '/^(?!view_memo).*$/'

これで解決しました。

ここは正規表現になっているので、複数ある場合は色々かけますね。

        schema_filter: '/^(?!view_memo|more_tables|views*).*$/'