Perl Catalyst 搜索功能可搜索多列

标签 perl catalyst

我在 SQLite 数据库中有一个表,并且有一个名为 Account 的模式。我还有一个搜索用户的表单。在我的 Controller 中我这样做:

my $params ||= $c->req->parameters; # Don't know what the difference is between ||= and =, did that way because someone had done it to and it works
my $search_term = $params->{search};

if( $c->request->params{submit} )
{
    $c->stash->{search_term} = $search_term;

    $c->stash->{search_results} = $c->model("DB::Account")->find({
        firstname => { like => "%$search_term%" },
    }) if $c->stash->{search_term};
}

然后在我看来我有这样的东西。

[% IF search_results > 0 %]
  [% FOREACH results IN search_results %]
    [% results.email %] <br/>
    [% results.firstname %]
[% END %]

上面的代码工作正常。我想要做的是搜索与 firstnamelastname 或其他列匹配的表,而不仅仅是一列。

我对 Catalyst 框架和 Perl 还很陌生(曾经用 Perl 做过一些东西,但不是很先进),所以任何帮助和提示将不胜感激。

最佳答案

至于这个:

my $params ||= $c->req->parameters; 

与:

相同
my $params = $params || $c->req->parameters; # when $params is not defined 
                                             # it will be used the part after ||

至于从表中搜索行。 find 方法将仅查找一行。

$c->stash->{search_results} = $c->model("DB::Account")->find({
        firstname => { like => "%$search_term%" },            
});

为了查找所有行,您应该使用方法searchsearch_rs。像这样的事情:

$c->stash->{search_results} = $c->model("DB::Account")->search({
        firstname => { like => "%$search_term%" },
        lastname => "Smith",
        email => "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bbd1c8d6d2cfd3fbdad9d895dfde" rel="noreferrer noopener nofollow">[email protected]</a>"
})

仅此而已!欲了解更多信息,您必须阅读DBIx::Class::ResultSet

UPD

为了查看 tt 文件中的结果,您应该使用以下命令:

[% WHILE (row = search_results.next) %]
[% row.email %]
[% row.firstname %]
[% END %]

关于Perl Catalyst 搜索功能可搜索多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091028/

相关文章:

perl - 如何在 Perl 中实现延迟模块加载?

perl - 如何引用 Perl 子例程?

perl - Perl 有枚举类型吗?

mysql - 在催化剂中将多个项目添加到模型中

perl - 将Catalyst应用程序部署到生产服务器的最佳实践是什么?

Perl 催化剂应用修改

perl eval block 抛出 execptions 没有错误

perl - 如何区分 Perl 中的 0 和空格?

perl - 如何使用MooseX::Storage来存储一大堆HashRef?

perl - 如何在 Catalyst 中限制对 POST 的请求