has_many: no such column

2 messages Options
Embed this post
Permalink
xu zhou

has_many: no such column

Reply Threaded More More options
Print post
Permalink
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@...
Jason Galea

Re: has_many: no such column

Reply Threaded More More options
Print post
Permalink
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@...

_______________________________________________
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@...