1

相互に関連がなく、両方のDBテーブルのフィールド数が異なる2つのDBテーブルTable1とTable2のレコードをページ分割したいのですが、各クエリにはいくつかの条件があり、他のテーブルとも結合されている必要があります。

次のようにデータを表示できるように、両方のテーブルのレコードを同時にページ付けしたい-

Row1 = Table1's - name, address,...
Row2 = Table2's - tool_name, quantity,...
Row3 = Table1's - name, address,...
Row4 = Table2's - tool_name, quantity,...
.
.
.

table1のレコードがない場合は、table2にページを移動し、その逆も同様です。symfony PHPフレームワークでこれを実行したいのですが、誰かがこのタイプのページ付けのクエリを作成するのを手伝ってもらえますか?

4

1 に答える 1

0

私はこのようなものになってしまいます。

さまざまなクエリのすべてのデータを取得して配列に保存し、後でキャッシュしました。

foreach($queries as $key => $query) {
 foreach ($query->fetchArray() as $result) {
    $data[] = $result;
 }
}

$c = new sfFileCache(
    array(
     'cache_dir' => sfConfig::get('sf_cache_dir').'/function',
     'lifetime'  => 3600,
    )
 );
$c->set('myarray',serialize($data));

sfDoctrinePagerを拡張して、これらすべてのクエリの合計ページ数などを検索できるようにします。

PHP usort()を使用して、特定の順序に従ってデータを並べ替えました。

usort($data, array($this,'activity_sort'));

次に、PHP array_chunk()を使用して、限られたレコードを取得しました。

$chunkedData  = array_chunk($data, $limit);
$finalData = $chunkedData[$page - 1];

はい、それはページ付けのルールを破りますが、その時私はこれより良い解決策を手に入れませんでした。

于 2013-01-29T04:25:16.780 に答える