2011-09-21 13 views
0

ビューに表示するレコードのグループ内の現在のレコードの位置/インデックスを検索しようとしています。 たとえば、データベースに10個のレコードがあり、ユーザーがレコード番号5を10で表示している可能性があります。したがって、この情報をview.ctpに表示したいと考えています: レコード#5を表示しています合計レコード数は10です。CakePHPの現在のレコード位置を取得する方法 - ビューの表示のために

私はすでに次のようにレコードの数を取得する方法を知っている:

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

私はすでにその値としてURL経由で渡されている、レコードの$ IDを知っている必要はありません。レコードの主キー値。

答えて

1

レコードを1つずつフェッチする場合、レコードの「番号」が何であるかの標準的な定義はありません。配列内のすべてのレコードがある場合は、現在のレコードのインデックスを使用できます。それ以外の場合は、レコードを注文するために使用する方法で序数を数える必要があります。たとえば、現在のレコードより以前に作成された日付を持つレコードの数を数え、結果に1を加算することができます。

+0

実際には、情報は、Paginatorによって配置された配列になります。私はいくつかのことを知る必要があると思う。現在のレコードのプライマリキー値を持っている場合、どのように配列インデックスを検索できますか?そして、もし私がその情報を持っていれば、値に1を加えて(インデックス付き)0にして、ページあたりのレコード数を持つページャーで現在のページ番号を掛けることができます。 – user956128

+0

私はその戦略に行きます。正しい '$ value ['anything']'が見つかったら、 '$ key'でインデックスを持っている' foreach($ array as $ key => $ value) 'を使います。 – 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を使用していますか?あなたがそうでなければならないように聞こえる、それはまた、 "YからXレコードを表示する"ことを簡単に表示するためにconvenient helperを持っています。

これはすべての必要なクエリを実行するので、手動カウントのクエリを自分で行う必要はありません。私はそれを調べることをお勧めします。

+0

はい、私はPaginatorを使用しています。ユーザーは、ページングされたレコードのリスト内のレコードをクリックして、このview.ctpの表示されたレコードにアクセスしました。しかし、ユーザーがレコードのグループ内を移動するために、次/前/最初/最後ボタンを押すことも許可します。私はヘルパーを見ましたが、YのXレコードを表示しているだけです。現在Xレコードのどのレコードが表示されているのかわかりません。 – user956128

+0

取得しようとしている実際の情報は何ですか? ID? – Dunhamzzz

+0

私はIDを(主キーの値のように)必要としません、私は現在のレコードの配列エントリのインデックスが必要です。あなたがデバッグを使うときに見るように、[]内にインデックス値が表示されます。そこから、私はページングのどのページが表示されているかに基づいて実際のレコード位置を計算できるようにしたいと考えています。おそらく、その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ヘルパーを編集することができ、またはあなたのビューで私の例を使用することができますので、レコード番号を返す関数を持っている必要があります。

関連する問題