[Catalyst-de] Problem mit Datenbank-Anbindung
mailinglisten at renee-baecker.de
mailinglisten at renee-baecker.de
Sun Mar 11 18:13:18 GMT 2007
Jetzt habe ich mich endlich mal durchgerungen, etwas mit Catalyst
herumzuspielen und schon tauchen Probleme auf ;-)
Ich möchte eine SQLite-DB einbinden. Wenn ich ein Testskript auf
Kommandozeile laufen lasse, dann funktioniert alles wunderbar, aber
wehe, ich möchte da was in Catalyst machen.
Mein Testskript:
#!/usr/bin/perl
use strict;
use warnings;
use PerlFAQ::Model::Database;
my $path = 'C:\PerlFAQ\root';
my $schema =
PerlFAQ::Model::Database->connect('DBI:SQLite:'.$path.'\perlfaq.db');
my @cats = $schema->resultset('Kategorie')->all;
for my $cat(@cats){
print $cat->Cat_ID," -- ",$cat->Cat_Name,"\n";
}
Meine drei "Hauptklassen":
Database.pm
package PerlFAQ::Model::Database;
use base 'DBIx::Class::Schema';
__PACKAGE__->load_classes(qw/Faq Kategorie/);
1;
Faq.pm
package PerlFAQ::Model::Database::Faq;
use strict;
use warnings;
use base qw(DBIx::Class);
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('Faq');
__PACKAGE__->add_columns(qw/Faq_ID Frage Antwort Kategorie_ID/);
__PACKAGE__->set_primary_key('Faq_ID');
__PACKAGE__->belongs_to('Kategorie_ID' =>
'PerlFAQ::Model::Database::Kategorie');
1;
package PerlFAQ::Model::Database::Kategorie;
use strict;
use warnings;
use base qw(DBIx::Class);
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('Kategorie');
__PACKAGE__->add_columns(Kategorie_ID => {accessor => 'Cat_ID'},
Kategorie_Name => {accessor => 'Cat_Name'});
__PACKAGE__->set_primary_key('Kategorie_ID');
__PACKAGE__->has_many(Faq => 'PerlFAQ::Model::Database::Faq',
{ 'foreign.Kategorie_ID' => 'self.Kategorie_ID' });
1;
Meine Model-Klasse in Catalyst:
package PerlFAQ::Model::Model;
use base qw/Catalyst::Model::DBIC::Schema/;
__PACKAGE__->config(
schema_class => 'PerlFAQ::Model::Database',
connect_info => [
'DBI:SQLite:C:\PerlFAQ\root\perlfaq.db',
],
);
1;
Und noch die Klasse, die eigentlich etwas ausgeben soll:
package PerlFAQ::Controller::FAQ;
use strict;
use warnings;
use base 'Catalyst::Controller';
use Data::Dumper;
use FindBin;
# zeige alle Kategorien an
sub index : Private{
my ( $self, $c ) = @_;
$c->response->body(Dumper($c->model->resultset('Kategorie')->all));
}
Ich bekomme aber immer nur:
Caught exception in PerlFAQ::Controller::FAQ->index "Can't call method
"select" on an undefined value at
C:/usr/site/lib/DBIx/Class/ResultSet.pm line 462."
Hat einer von euch ne Ahnung, was ich da falsch mache??
Viele Grüße,
Renée
---
$foo - Perl-Magazin -> http://www.foo-magazin.de
9. Deutscher Perl-Workshop 21.-23.02.2007 in München
Mehr Infos unter http://www.perl-workshop.de/de/2007/
More information about the Catalyst-de
mailing list