2

これが私の問題です。データベースに 3 つのテーブルがあります。コレクション、ボックスセット、CD。これらのテーブルには、次のような親子関係があります。

コレクションには 1 つ以上の Boxset があります

Boxset には 1 つまたは複数の CD が含まれます

各テーブルに次の列を作成しました。

コレクション

  • collection_id - collection_title

ボックスセット

  • boxset_id - boxset_title - collection_id

CD

  • cd_id - cd_title - boxset_id

次のようにデータを表示するために、利用可能なすべてのデータを取得し、これらのデータを多次元配列で構造化しようとしています: -Collection 1 —Boxset1 —-CD 1 —-CD 2 —Boxset 2 —-CD 1 ... -Collections 2 ....

ただし、「cds」テーブルに「collection_id」フィールドを追加しないと、1 つの配列ですべてのデータを取得することは不可能に見えます。これまでの私の解決策は、次のように 2 つの配列 (collections-boxsets 配列と boxsets-cds 配列) を作成することです。

$collections = $this->collection_model->get_all_collections();
  foreach($collections->result_array() as $row){
   $arrayCollections[$row['collection_id']] = $row;
  }  
  $boxsets = $this->boxset_model->get_all_boxsets();
  foreach($boxsets->result_array() as $row){
   $arrayCollections[$row['collection_id']]['boxsets'][] = $row;
  }
  foreach($boxsets->result_array() as $row){
   $arrayBoxset[$row['boxset_id']] = $row;
  }  
  $cds = $this->cd_model->get_all_cds();
  foreach($cds->result_array() as $row){
   $arrayBoxset[$row['boxset_id']]['cds'][] = $row;
  }
  foreach($arrayCollections as $collections){
   echo '-'.$collections['collection_title'].'<br />'; 
   foreach($collections['boxsets'] as $boxset){
    echo '--'.$boxset['boxset_title'].'<br />';
    foreach($arrayBoxset[$boxset['boxset_id']]['cds'] as $cd){
     echo '---'.$cd['title'].'<br />';
    }
   }  
  } 

これを最適化するための提案はありますか?

4

0 に答える 0