[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