異なる検索条件の結果を1つのページャーで

データベースへ照会した後、その結果を表示したいがレコード数が多い場合、ページ制御が必要になる。
CakePHPにはそのための仕組みがあるので簡単にできるけど

2通りの検索条件による検索結果を1ページに表示し、ページ移動のためのナビ(「次へ」や「前へ」や「○ページ」など)は一つにしてくれ

という要求があって足掻いてみたいのでメモメモ。
環境は

まずコントローラー。

<?php
class HogeController extends AppController
{
  // ... 略 ...

  public function index() {
    // 条件1と条件2でのレコード数を調べておく
    $cnt1 = $this->_countRecords1();
    $cnt2 = $this->_countRecords2();

    // 件数の多いほうを後にしてやる
    if ($cnt1 < $cnt2) {
      $data1 = $this->_paginate1(); // $this->paginate()の戻り値を取得している
      $data2 = $this->_paginate2(); // 同上
    } else {
      $data2 = $this->_paginate2();
      $data1 = $this->_paginate1();
    }

    $this->set('data1', $data1);
    $this->set('data2', $data2);
  }
}
?>

ってしてやると、ビュー側の$paginatorが件数の多い方の設定で上書きされる。

<?php foreach ($data1 as $d1): ?>
	<!-- 表示 -->
<?php endforeach; ?>
<?php foreach ($data2 as $d2): ?>
	<!-- 表示 -->
<?php endforeach; ?>

<?php
	echo $paginator->prev('<< prev');
	echo '&nbsp;';
	echo $paginator->numbers();
	echo '&nbsp;';
	echo $paginator->next('next >>');
?>

件数が少ない方のデータは、最後に表示されたデータがずっと表示されるっぽい。

その後

ページによっては2つのページャーが必要になったりして、結局JavaScriptでやることになった。