2011-09-21 62 views
0

我正試圖在視圖中顯示的一組記錄中查找當前記錄的位置/索引。因此,例如,我可能在數據庫中有10條記錄,並且用戶可能正在查看5號記錄中的10條記錄。所以我希望能夠在view.ctp上顯示此信息: 您正在查看記錄#5共有10條記錄。如何獲取CakePHP的當前記錄位置 - 用於顯示在視圖中(記錄的)

我已經知道如何獲得的記錄數如下:

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

我不需要知道記錄的$ ID,我已經通過URL作爲傳遞該值記錄的主鍵值。

回答

1

如果您逐一提取記錄,那麼記錄的「編號」沒有標準定義。如果您擁有數組中的所有記錄,則可以使用當前記錄的索引。否則,您必須通過您用來訂購記錄的任何方法來計算序數。例如,您可以計算早於當前記錄創建日期的記錄數,並將結果加1。

+0

實際上,信息將位於數組中,並由Paginator放在那裏。我想我需要知道幾件事情。如果我有當前記錄的主鍵值,我該如何查找它的數組索引?然後,如果我有這些信息,也許我可以將值加1(索引爲0),然後乘以paginator使用的當前頁面#和每頁記錄數。 – user956128

+0

我會用這個策略。使用'foreach($ array作爲$ key => $ value)',當你找到正確的'$ value ['whatever']''你在'$ key'中有索引時。 – JJJ

+0

感謝您的建議。我現在更瞭解這個過程。我最終做了這樣的事情: '//獲取顯示記錄位置的鍵列表 $ record_position =''; $ conditions = array(); $ record_position_query = $ this-> TblAsset-> find('list',array('fields'=>'TblAsset。ID')); $ record_position_list = array_keys($ record_position_query); //解析所有鍵到數字數組 $ record_position = array_search($ id,$ record_position_list)+ 1;' 但是最近我有了第二個想法,也許我應該在模型中做這樣的事情作爲一種行爲。 – user956128

0

您是否使用內置CakePHP pagination?這聽起來像你應該,它也有一個convenient helper輕鬆顯示「顯示X記錄Y」。

它爲您做了所有必要的查詢,因此您不需要自己執行任何手動計數查詢。我建議你看看它。

+0

是的,我正在使用Paginator。用戶點擊記錄的分頁列表中的記錄來到這個view.ctp顯示的記錄。但我也允許用戶點擊Next/Previous/First/Last按鈕在記錄組中移動。我看着助手,但它只顯示Y的X記錄。我不知道當前正在查看X記錄的哪個記錄。 – user956128

+0

你想得到什麼樣的實際信息?標識? – Dunhamzzz

+0

我不想要ID(如在主鍵值中),我需要當前記錄的數組條目的索引。就像您在使用調試時看到的那樣,您將在[]括號內看到索引值。從那裏,我希望能夠根據顯示paginator的哪個頁面來計算實際的記錄位置。也許有一種簡單的方法可以根據ID來查找記錄的索引? – user956128

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 +((第11頁)* 10)= 1
和第2頁上,等你將有 結果1 +((第2頁 - 1)* 10)= 11

而且我意見它應該有一個返回記錄號的函數,所以你可以編輯Paginator Helper,或者在你的視圖中使用我的例子。

相關問題