我有一个 MySQL 数据库,其中包含多个表和这些表上的视图。视图将可以看到的内容限制为单个客户的数据 ( 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
如何让加载程序在加载时跳过某些列?