Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12593[/thread]

Dbix::Class frage

Leser: 12


<< >> 2 Einträge, 1 Seite
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 /);
pq
 2009-03-20 10:11
#119602 #119602
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
auch wenns schon eine weile her ist, dass die frage gestellt wurde:
du musst wohl an der stelle ein objekt übergeben. aber das kannst du wohl auch mit new anstatt create erzeugen (habe ich aber nicht ausprobiert).
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 2 Einträge, 1 Seite



View all threads created 2008-10-07 12:05.