2

私は2つの多対多の関係テーブルを持っています。投稿とカテゴリ。1つの投稿に多くのカテゴリを含めることができます。私の質問は、投稿のリストとそのカテゴリをどのように表示できるかということです。

そのように:

私の投稿1(cat1、cat2、cat3)
私の投稿2(cat2、cat3)
私の投稿3(cat1)

私はこれらの方法を試しました。

// Create post object
$p = new Post();

// Get 30 posts
$p->get(30);

// Loop through all posts
foreach ($p as $post)
{
    // Get the current user's group
    $post->category->get();

    foreach($post->category as $category) {
       // ...
    }
}

これは気に入らないでください。30件の投稿がある場合は、すべての投稿ループでもう一度クエリを実行し、カテゴリを何度も見つけます。

そしてこれを試しました:

$p = new Post();

$p->include_related('category', array('id', 'name'), TRUE, TRUE)->get(30);

foreach($p as $post) {
  // ...  
  foreach($post->category as $category) {
     // ...
  }
}

これはもっと近いですが、この1つの問題は、制限を設定get(30)しているため、投稿ごとに15の投稿+15のカテゴリを表示するよりも2つのカテゴリがある場合です。

多対多のリストの本当の方法は何ですか?

4

1 に答える 1

0

この場合、両方のテーブルをphp連想配列にキャッシュすることを選択し、配列だけをループします。

于 2012-04-19T09:15:15.843 に答える