我使用DBIx::Class::Schema::Loader
为我的数据库创建静态ORM。我使用以下方法创建它并为ResultSet
和Result
类指定基类,我可以将泛型子函数插入:
make_schema_at(
'MyApp::Schema',
{
debug => 1,
dump_directory => '/home/rob/projects/myapp/MyApp/lib',
overwrite_modifications => 1,
components=> ['EncodedColumn'],
use_namespaces => 1,
result_base_class => 'MyApp::Schema::ResultBase',
default_resultset_class => 'ResultSetBase'
},
[ 'DBI:mysql:database=mydb;host=localhost;port=3306','user', 'pass' ],
);
这就像魅力一样,但我也找不到如何为ResultSource
创建基类。我想在子类中插入一个子类,以便我可以执行类似(伪代码)的操作:
$c->model('DB')->source->('Account')->getParentSource('Project');
ResultSourceBase.pm:
sub getParentSource {
my ($self,$parent) = @_;
foreach $relation in $self->relations
if ($relation->identifier eq $parent)
return $relation->source;
return $self;
}
有人能告诉我如何告诉加载程序使用基类ResultSource
类,我可以在其中插入上述内容吗?
谢谢!
答案 0 :(得分:0)
这是DBIx :: class中最不了解且记录最少的区域之一。
我认为您可以通过创建组件并使用以下方式加载它来实现:
__PACKAGE__->load_components(qw/ +My::Component /);
请参阅http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Manual/Component.pod