複数のテーブルとそれらのテーブルのビューを持つ MySQL DB があります。ビューは、表示できる内容を 1 人の顧客のデータに限定します ( create view ... where customer_id = X
)。Catalyst アプリは、実際のテーブルではなく、これらのビューと通信します。ビューの列と基礎となるテーブルの列の唯一の違いは、ビューに列がないことcustomer_id
です (つまり、アプリケーションからは、現在の顧客がシステム内の唯一の顧客のように見えます)。
問題は、DBIC Schema Loader を使用してビューからスキーマをロードできないことです。ビューにはすべての関係とキーがないためです。ベース テーブルからスキーマをロードし、それをビューで使用する必要があります。customer_id
問題は、その列を取り除くことができないことです。アプリケーションが対話するビューには存在しないため、それを取り除く必要があります。
filter_generated_code
生成されたコードから不要なビットを削除するオプションを使用することになりましたが、生成中に次のエラーが発生します。
DBIx::Class::Schema::Loader::make_schema_at(): No such column customer_id
at /opt/merp/perl/lib/perl5/Catalyst/Helper/Model/DBIC/Schema.pm line 635
ロード時にローダーが特定の列をスキップするようにするにはどうすればよいですか?