如何获取CakePHP当前记录位置 - 在视图中显示(记录??)

时间:2011-09-21 05:03:38

标签: cakephp

我试图在一组记录中找到当前记录的位置/索引,以便在视图中显示。 因此,例如,我可能在数据库中有10条记录,并且用户可能正在查看记录#5中的10条。所以我希望能够在view.ctp上显示此信息: 您正在查看总共10条记录中的第5条记录。

我已经知道如何获取记录数量如下:

$total_record_count = $this->TblAsset->find('count');

我不需要知道记录的$ id,我已经通过URL传递了该值作为记录的主键值。

3 个答案:

答案 0 :(得分:1)

如果您逐个获取记录,则记录的“数字”没有标准定义。如果您拥有数组中的所有记录,则可以使用当前记录的索引。否则,您必须通过用于订购记录的任何方法来计算序数。例如,您可以计算先前创建的日期比当前记录的记录数,并将1添加到结果中。

答案 1 :(得分:0)

您使用内置的CakePHP pagination吗?它听起来应该是,它还有一个convenient helper,可以轻松显示“从Y中显示X记录”。

它会为您完成所有必要的查询,因此您不需要自己进行任何手动计数查询。我建议你调查一下。

答案 2 :(得分:0)

我发现最简单的解决方案是添加一个你递增的索引并添加当前页面-1 *结果数/页

实施例: 我有一个限制为10的查询我可以对其进行硬编码或添加另一个变量

$paginatorParams = $this->Paginator->params(); // which returns an array with 'limit' as  an index

所以我会:

$index = 0;
$paginatorParams = $this->Paginator->params();
foreach($records as $record):
   $index++;
   echo $index + ( ((int)$this->Paginator->counter('{:page}') - 1) * $paginatorParams['limit'] );
endforeach;

所以在第1页你会有 结果1 +((第1 - 1页)* 10)= 1
在第2页,等等,你会有 结果1 +((第2 - 1页)* 10)= 11

另外在我看来它应该有一个返回记录编号的功能,所以你可以编辑Paginator Helper,或者在你的视图中使用我的例子。

相关问题