1

我正在尝试使用Mojolicious 数据库插件,但发现了一些困难。我关于这个主题的前两页谷歌搜索结果已经被访问过。场景很简单:连接到一个数据库(mysql),获取一些数据,显示它。这是代码的摘录:

use Mojolicious::Lite;
use Mojolicious::Plugin::Database;

# [...]

sub startup {
    my $self = shift;
    $self->plugin('database', {
            dsn      => 'dbi:MySQL:dbname=y',
            username => $mysql_user,
            password => $mysql_passwd,
            helper   => 'ydb',
            });
};

get '/' => sub {
    my $c = shift;
    my $zz=$c->ydb->prepare("select count(*) from customers");
    my $total=$zz->execute();                                 
    $c->ydb->bind_columns(\$total);
    $c->ydb->fetch;
    $c->session(customer=>$total);
    $c->render(template => 'index');
};

但我收到了错误:

无法通过包“Mojolicious::Controller”定位对象方法“ydb”

我肯定缺少一些基础知识。有人能指出我正确的方向吗?

4

1 回答 1

1

我从来没有从插件工作中得到帮助。我结合 Mojo::mysql 创建了自己的助手。

use Mojolicious::Lite;
use Mojo::mysql;

sub startup {
    my $self = shift;
}

helper ydb => sub {
        my $c = shift ;
        return Mojo::mysql->strict_mode('mysql://muziek:muziek@localhost/muziek') 
};

get '/foo' => sub {
  my $c = shift ;

  my $db = $c->ydb->db;
  my $row = $db->query("select count(*) COUNT from TITLE")->hash;
  $c->render(text => "Hello from /foo. count="  . $row->{COUNT} );
};

app->start;
于 2018-09-01T14:54:56.143 回答