Thread Dbix::Class frage (1 answers)
Opened by Gast at 2008-10-07 12:05

Gast Gast
 2008-10-07 12:05
#115238 #115238
Hallo allerseits,

ich versuche gerade einen Eintrag in eine DB einzufügen. Dabei soll gleichzeitig in zwei Tabellen eingefügt werden, die mit belongs_to/has_many (foreign key) verbunden sind.

Code (perl): (dl )
my $person = $schema->resultset('Person')->create({'name' => {'name' => "Mary"}});


Ich bekomme die Fehlermeldung:

Can't call method "isa" on unblessed reference at /usr/share/perl5/DBIx/Class/Relationship/Accessor.pm line 43.


Was funktioniert ist:
Code (perl): (dl )
1
2
my $name = $schema->resultset('Name')->create({name => 'Mary'})
my $person = $schema->resultset('Person')->create({'name' => {'name' =>  $name}});


Die Frage ist: Geht das nicht, oder mache ich was falsch?

Mein Schema sieht so aus:
Main/Name.pm
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
package Main::Name;
use base qw/DBIx::Class/;
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('name');
__PACKAGE__->add_columns(
   id => {data_type => 'integer', is_nullable => 0, is_auto_increment => 1},
   name => {data_type => 'varchar',is_nullable => 0,size => 255,},
);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->has_many('persons', 'Main::Person');
__PACKAGE__->add_unique_constraint(['name']);
1;

Main/Person.pm
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
package Main::Person;
use base qw/DBIx::Class/;
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('person');
__PACKAGE__->add_columns(
   id  => {data_type => 'integer',is_nullable => 0,is_auto_increment => 1},
   name => {data_type => 'integer',is_nullable => 0},
);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->belongs_to(name => 'Main::Name');

Main.pm
Code (perl): (dl )
1
2
3
package Main;
use base qw/DBIx::Class::Schema/;
__PACKAGE__->load_classes(qw/ Person Name /);

View full thread Dbix::Class frage