0

CakePHP 2.3.7 を使用しています。ユーザーにコンテンツを表示するために、contents というモデルがあります。コントローラーはこのモデルからデータを取得し、ページネーションを使用してビューに送信します。これまでのところ、すべて正常に動作しています。ここで、非常に具体的な順序でコンテンツを表示したいと思います。私が知っている限りでは、順序は次のとおりであるため、paginate() で「順序」パラメーターを使用することはできません。

  1. ユーザーごとに個別 (したがって、データベース内のフィールドではありません)
  2. その場で作成された複雑な計算に基づいて頻繁に変更する
  3. 現在セッション配列に格納されている

関連するすべてのアイテム ID と、注文での位置を定義する値を含む配列があります。必要なのは、データベースからの並べ替えではなく、配列で定義した順序を使用するようにページ付けを教える方法です。私が持っている配列は次のようなものです。最初の数字は注文の位置で、2 番目の数字はアイテムの ID です。

この特定のアイテムの順序を使用するようにページネーションに指示する方法はありますか?

array(
        (int) 0 => '308',
        (int) 1 => '311',
        (int) 2 => '313',
        (int) 3 => '317',
        (int) 4 => '325',
        (int) 5 => '326',
    )
4

1 に答える 1

1

注文をセッションや配列に保存するのではなく、ユーザーごとにデータベースに保存しますか? (再)計算された後、注文情報を更新すると、DB の order by 機能を使用できます。したがって、「位置」フィールドをテーブルに直接配置するか、複数のユーザーに関連付けられている場合は結合テーブルに配置して、このフィールドで並べ替えます。

この動作は、リストにする必要がある項目を処理します。

于 2013-08-11T11:37:30.170 に答える