Я не видел ваш код, поэтому не могу точно знать, что вы делаете, но если вы используете Catalyst :: Model :: DBI , вы делаете что-то не так.Необработанная модель возвращает объект, например: MyApp::Model::DBI=HASH(0xdf7ba0)
Похоже, вы пытаетесь загрузить DBI с помощью адаптера.Подклассы DBI сложнее, чем вы думаете, поэтому я бы определенно не стал этого делать.
Минимальное воспроизведение -
# Create a new test model with SQLite.
script/*create.pl model DBI DBI "dbi:SQLite::memory:"
# A test controller to go with it.
script/*create.pl controller DBI
# Change the index method to show your raw model–
sub index :Path Args(0) {
my ( $self, $c ) = @_;
$c->response->body( $c->model("DBI") );
}
Теперь вы можете попробовать добавить что-нибудь в вашу модель -
# lib/MyApp/Model/DBI.pm
sub add {
my $self = shift;
my @add = @_;
@add == 2 or die "2 is a terrible error message: 2";
return $self->dbh->selectrow_array("SELECT ? + ?", {}, @add);
}
А это для вашего контроллера -
# lib/MyApp/Controller/DBI.pm
sub add : Local Args(0) {
my ( $self, $c ) = @_;
$c->response->body( $c->model("DBI")->add( 2,2 ) );
}
Тогда посетите localhost:3000/dbi/add
.Продолжайте расширять свою модель так, как вам нравится.
Теперь, когда на вопрос дан ответ.Вы действительно, действительно, действительно должны принять учебный хит прямо сейчас и познакомиться с DBIx :: Class или с одним из других первоклассных ORM в Perl.С обнаженным DBI все в порядке, но со временем вы обнаружите 100 проблем, которые решает DBIC, и у них будет глубокий набор тестов, длинная история, десятки расширений и полезное сообщество.