[Warszawa-pm] DBIx::Class

Zbigniew Lukasiak zzbbyy w gmail.com
Czw, 21 Paź 2010, 01:52:03 PDT


2010/10/21 Łukasz Mądrzycki <guksza w gmail.com>:
> Hej,
>
> zwykle używam (o ile używam) Class::DBI i do moich prostych rzeczy wystarcza.
> Chciałbym jednak spróbować DBIx::Class. I mam zaćmienie i czegoś nie
> chwytam: jaka jest różnica między has_many i belongs_to. Jakoś nie
> mogę tego ogarnąć.
>
> Na przykładach jest:
>
>  package MyDatabase::Main::Result::Artist;
>  use base qw/DBIx::Class::Core/;
>  __PACKAGE__->table('artist');
>  __PACKAGE__->add_columns(qw/ artistid name /);
>  __PACKAGE__->set_primary_key('artistid');
>  __PACKAGE__->has_many('cds' => 'MyDatabase::Main::Result::Cd');
> 1;
>
>  package MyDatabase::Main::Result::Cd;
>  use base qw/DBIx::Class::Core/;
>  __PACKAGE__->load_components(qw/InflateColumn::DateTime/);
>  __PACKAGE__->table('cd');
>  __PACKAGE__->add_columns(qw/ cdid artist title/);
>  __PACKAGE__->set_primary_key('cdid');
>  __PACKAGE__->belongs_to('artist' => 'MyDatabase::Main::Result::Artist');
>  __PACKAGE__->has_many('tracks' => 'MyDatabase::Main::Result::Track');
>
>  1;
>
> Czy zadeklarowanie artist->has_many(cds) nie wystarczy, trzeba jeszcze
> cd->belnogs_to(artist)?

No tak - teoretycznie to powinno wystarczyc, ale DBIC po prostu nie
przenosi informacji o relacji z klasy Artist do CD - dlatego trzeba to
zadeklarowac ponownie.
http://search.cpan.org/~dami/DBIx-DataModel-1.25/lib/DBIx/DataModel.pm
na przyklad przenosi.


-- 
Zbigniew Lukasiak
http://brudnopis.blogspot.com/
http://perlalchemy.blogspot.com/


Więcej informacji o liście Warszawa-pm