0

カテゴリーと投稿があります。すべてのカテゴリ (親) と関連するすべての投稿 (子) を一覧表示したいと思います。ネストされたセットがない場合、複雑なクエリ。関係が確立されました。

ドキュメントから覚えているように:

$categories = new Category();

foreach( $categories->get() as $category )
{
   echo $category->name;

   foreach( $category->post->get() as $post)
   {
       echo $post->title;
   }

}

1000 のカテゴリがある場合、カテゴリごとにクエリが作成されます。

この場合のベストプラクティスは何ですか?

  1. 投稿とカテゴリの 2 つのクエリを作成し、php でツリーにマージしますか?
  2. 2 つのテーブル、1 つのクエリを結合し、php でツリーを作成しますか?
  3. 誰かの賢いアイデア:)
4

1 に答える 1

1

必要なデータを取得する専用のモデル メソッドを作成し、(ページ付けのために) バッチで取得します。いくつかのコード例でアイデアに飛び込む前に、中心となる概念は、 INNER JOINステートメントを介してリンクする 2 つのテーブルがあり、選択をバッチで制限することです。次に、ビューで通常どおりにデータを表示します。

次のようなカテゴリテーブルがあるとします。

  • ID
  • 名前

また、次のようなポストテーブルがあるとします。

  • ID
  • 名前
  • カテゴリ ID

基本的に、必要なエントリを取得しますが、結果も制限します。

$this->db->select('*');
$this->db->from('category');
$this->db->join('post', 'post.category_id = category.id', 'inner');
$this->db->limit($limit, $offset);
$query = $this->db->get();

ページネーションは、大量のデータを表示する必要がある場合に役立ちます。ただし、すべてのデータを一度に表示する必要がある場合は、 MemcachedGearmanまたは同様のキャッシュ テクノロジを使用して、パフォーマンスを向上させることを検討してください。

于 2013-10-23T14:05:07.607 に答える