簡體   English   中英

DBIx :: Class :: Schema :: Loader ResultSource基類

[英]DBIx::Class::Schema::Loader ResultSource base class

我正在使用DBIx::Class::Schema::Loader為我的數據庫創建一個靜態ORM。 我使用以下方法創建它並為ResultSetResult類指定基類,我可以將通用子類插入:

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類,我可以在其中插入如上所述的東西?

謝謝!

這是DBIx :: class中最不易理解和記錄較少的領域之一。

我認為您可以通過創建組件並使用以下方式加載它來實現:

__PACKAGE__->load_components(qw/ +My::Component /);

請參閱http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Manual/Component.pod

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM