2012-05-07 10 views
1

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

私は私がTABLE1にはレコードが存在しません場合、それは表2およびその逆をページ分割しますfollows-

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

としてデータを表示できるように、同時にテーブルの両方のレコードをページ付けしたいです。 私はこれをsymfony PHP frameworkで行いたいと思います。誰かがこのタイプのページネゴシエーションのクエリを作成する助けになります。

+0

こんにちは@Sitansu、どうしたの?ありがとう! – Luccas

+1

遅れて申し訳ありません。ソリューションは少し長いので、私は答えのセクションに解決策を入れています。 – Sitansu

答えて

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()を使用しました。

次に、私は限られたレコードを取得するためにPHPのarray_chunk()を使用しました。

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

はい、ページングのルールが壊れていますが、そのとき私はこれ以上の解決策はありませんでした。

関連する問題