[Dbix-class] has_many: no such column

Jason Galea lists at eightdegrees.com.au
Wed Aug 5 12:51:24 GMT 2009


Hi xu zhou,

__PACKAGE__->has_many( 'resource' => 'DNS::WebDns::Result::Resource' );

you need to specify the column which has DNS::WebDns::Result::Zone's 
primary id. ie:

__PACKAGE__->has_many( 'resource' => 'DNS::WebDns::Result::Resource', 
'zone_id' );

It's guessing it's 'zone' which it gets from the class name.

cheers,

J


xu zhou wrote:
> Hi all,
>        I just begin to use DBIx::Class, and  I got a error described 
> like this:
>
> DBIx::Class::Schema::throw_exception(): 
> DBIx::Class::Row::throw_exception(): 
> DBIx::Class::Relationship::HasMany::has_many(): No such column zone on 
> foreign class DNS::WebDns::Result::Resource (using our class name 
> 'DNS::WebDns::Result::Zone' as foreign key) at 
> DNS/WebDns/Result/Zone.pm line 9
> Compilation failed in require at 
> /usr/local/lib/perl5/site_perl/5.10.0/Class/C3/Componentised.pm line 128.
> Compilation failed in require at 
> /usr/local/lib/perl5/site_perl/5.10.0/Class/C3/Componentised.pm line 128.
>
>
> Here is my code:
>
> use base qw/DBIx::Class/;
> __PACKAGE__->load_components(qw/Core PK::Auto/);
> __PACKAGE__->table('dns_zone');
> __PACKAGE__->add_columns(
>     qw/ zone_id zone_name zone_ttl soa_ttl primary_name_server 
> hostmaster_email serial retry refresh expire minimum_ttl city_rdc 
> created_time modified_time /
> );
> __PACKAGE__->set_primary_key('zone_id');
> __PACKAGE__->has_many( 'resource' => 'DNS::WebDns::Result::Resource' );
>
> 1;
>
> package DNS::WebDns::Result::Resource;
> use base qw/DBIx::Class/;
>
> __PACKAGE__->load_components(qw/Core PK::Auto/);
> __PACKAGE__->table('dns_resource_record');
> __PACKAGE__->add_columns(qw/ resource_id zone_id map_from ttl type 
> preference map_to created_time modified_time /);
> __PACKAGE__->set_primary_key('resource_id');
> __PACKAGE__->belongs_to( 'zone_id' => 'DNS::WebDns::Result::Zone');
>
> 1;
>
>
>
>
> actually quite simple and has nothing to discuss.
> but how come I got that Compilation Error?
> my DBIx::Class version is 0.08108
>
> thanks.
>
>
> -- 
> Xu Zhou
> Tju->PMO->Where?
> ------------------------------------------------------------------------
>
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk



More information about the DBIx-Class mailing list