0

CakePHP でページネーションを行うことに疑いがあります。

さて、私は簡潔にしようとします。

私は3つのテーブルを持っています.1つのテーブルは私が改ページしたものです(1番目のテーブル)、別のテーブル(2番目のテーブル)はこれに依存しています(1番目のテーブルは2番目のテーブルへのFKを持っています)、そして最も重要な3番目のテーブルは1番目のテーブルへのFKを持っています. つまり、3 番目のテーブル -> 1 番目のテーブル -> 2 番目のテーブル。私は彼のコントローラーから最初のテーブル(モデル)のページネーションを行いますが、これまでのところすべて問題ありません。ページネーションはテーブルbdからのすべてのレコードをリストし、問題はありません。

1 番目のテーブルからレコードを取得する必要もありますが、2 番目のテーブルのレコードで注文します。問題ない。問題は次のとおりです。ページネーションを取得したくないのですが、3番目のテーブルには存在しない1番目のテーブル(ページネーションされています)のレコードです。

問題は、CAKEPHP が最初に 1 番目のテーブル + 2 番目のテーブルからレコードを取得するクエリを作成することです。この後、最初のクエリから取得したレコード (PK) に従って 3 番目のテーブルからレコードを取得するので、3 番目のテーブルに存在しない 1 番目のテーブルからレコードを取得しないとは言えません。

これどうやってするの?

説明したことを願っています。

どうもありがとうございました。

よろしく。

4

1 に答える 1

0

使用したいのは Counter Cache です。http://book.cakephp.org/2.0/en/models/associations-linking-models-together.htmlにアクセスして「 counterCache 」を検索すると、手順が表示されます。

基本的に、モデル 1 に「カウンター キャッシュ」フィールドを実装し、モデル 3 のリンクされたレコードの数を自動的に保持します。次に、モデル 3 に関連するレコードがないモデル 1 のレコードを除外するには、次のように追加します。カウンタ キャッシュ フィールドが 0 より大きくなければならないことを示すページネーション条件。

アップデート:

CakePHP のカウンター キャッシュを使用できない場合は、仮想フィールドを使用してカウンター キャッシュの動作をエミュレートする必要があります。http://book.cakephp.org/2.0/en/models/virtual-fields.htmlを参照してください。

于 2013-10-01T12:43:56.220 に答える