とても簡単でシンプルなことをしたいです。同じページに2つの異なるページ付けされたデータのセットが必要です。2つの異なるセットは、異なるモデルによって異なります。Image
議論のために、それらはとであると言いますItem
。
2つのモデルに2つのポケットベルを設定して、正しいオブジェクトのセットを取得できます。正しいポケットベルのリンクを取得できます。ただし、実際にパラメータへのリンクをたどる場合は、両方のポケットベルがパラメータを読み取り、それらが適用されると想定します。
最終的には次のようになります。
$this->paginate = array (
'Item'=>array(
'conditions'=>array('user_id'=>$id),
'limit' => 6,
'order' => array(
'Item.votes'=>'desc',
'Item.created'=>'desc'
),
'contain'=>array(
'User',
'ItemImage' => array (
'order'=>'ItemImage__imageVotes desc'
)
)
),
'Image'=>array(
'limit'=>6,
'contain'=>array(
'User',
'ItemImage'=>array('Item'),
),
'order'=>array(
'Image.votes'=>'desc',
'Image.views'=>'desc'
),
'conditions'=>array(
'Image.isItemImage'=>1,
'Image.user_id'=>$id
)
)
);
$this->set('items', $this->paginate('Item'));
$this->set('images', $this->paginate('Image'));
それはコントローラーにあります。ビューには、次のような並べ替えリンクがあります。
<div class="control"><?php echo $this->Paginator->sort('Newest', 'Image.created', array('model'=>'Image')); ?></div>
ただし、次のようなリンクが生成されます。
http://localhost/profile/37/page:1/sort:Image.created/direction:asc
そこには、私がどのモデルをソートしようとしているのかをページネーターに伝えるものは何もありません。そのため、リンクをクリックすると、両方のモデルをで並べ替えようとしますImage.created
。Item
で並べ替えることができないため、結果はエラーになりImage.created
ます。私が間違っていることはありますか?それとも、これはCakePHPのページネーターでサポートされていないものですか?