模板工具包显示唯一行

template toolkit displays unique row

我正在使用 Perl dancer2 编写应用程序。 运行 select 中的查询 mysql 显示所有记录。但 dancer2 和模板工具包中的相同查询 运行 仅显示唯一记录。

例如。当这是 mysql 客户端中的 运行 时获取了 34 条记录。

    select timing.time as Time,
           church.church_name as Church_Name, 
           church.church_address as Address, 
           language.language_name as Language, 
           denomination.denomination_name as Denomination, 
           city.city_name as City, 
           state.state_name as State, 
           country.country_name as Country 
      from church 
      join country on church.church_countryid=country_id 
      join state on church.church_stateid=state.state_id 
      join city on church.church_cityid=city.city_id 
      join church_mass_timing on church.church_id=church_mass_timing.church_id 
      join timing on church_mass_timing.time_id=timing.time_id 
      join language on church_mass_timing.language_id=language.language_id 
      join denomination on church.church_denominationid=denomination.denomination_id 
  order by church.church_name,
           timing.time;

Dancer 中使用模板工具包的相同查询 returns 11 条记录。

get '/church_list' => sub {
my $db = connect_db();
my $sql='select timing.time as Time,
                church.church_name as Church_Name, 
                church.church_address as Address, 
                language.language_name as Language, 
                denomination.denomination_name as Denomination, 
                city.city_name as City, 
                state.state_name as State, 
                country.country_name as Country 
           from church 
           join country on church.church_countryid=country_id 
           join state on church.church_stateid=state.state_id 
           join city on church.church_cityid=city.city_id 
           join church_mass_timing on church.church_id=church_mass_timing.church_id 
           join timing on church_mass_timing.time_id=timing.time_id 
           join language on church_mass_timing.language_id=language.language_id 
           join denomination on church.church_denominationid=denomination.denomination_id 
       order by church.church_name,
                timing.time';
my $sth = $db->prepare($sql) or die $db->errstr;
$sth->execute or die $sth->errstr;
template 'church_list.tt' => { 'title' => 'church list',
   'site' => 'Church Timings', 
   'entries' => $sth->fetchall_hashref('Time'),
};
};    

这是church_list.tt

<% INCLUDE header.tt %>
<ul id="content">
<button id="btnExport">Export to xls</button>
<br />
<br />
<div id="table_wrapper">

<% IF entries.size %>
<table border="1" cellspacing="2" widht="100%">
<tr>
<th><center>Time</center></th>
<th><center>Church name</center></th>
<th><center>Address</center></th>
<th><center>Language</center></th>
<th><center>Denomination</center></th>  
<th><center>City</center></th>
<th><center>State</center></th>
<th><center>Country</center></th>
</tr>
<% FOREACH id IN entries.keys %>
<tr>
<td><% entries.$id.Time %></td>
<td><% entries.$id.Church_Name %></td>
<td><% entries.$id.Address %></td>
<td><% entries.$id.language %></td>
<td><% entries.$id.denomination %></td>
<td><% entries.$id.city %></td>
<td><% entries.$id.state %></td>
<td><% entries.$id.country %></td>
</tr>
<% END %>
</table>
</div>
<% ELSE %>
<li><em>No entries here so far.</em>
<% END %>
</ul>

谢谢。

请注意 fetchall_hashref returns hashref { FieldValue => FieldsHash }。

当某些字段值不唯一时,您会遗漏一些 FieldHashes(每个具有相同时间值的下一条记录将覆盖结果 hashref 中的前一条)。

在这些情况下,请使用行数组 (selectall_arrayref)。

P.S.: 这个查询中的时间总是不唯一的(有时可能会同时添加两条记录)。