ユーザー、カテゴリ、投稿があります。ユーザーには多くの投稿があり、カテゴリには多くの投稿があり、投稿は1つのカテゴリと1つのユーザーに属しています。
正しい投稿で正しいユーザーを表示するためのサポートが必要です。
テーブル
categories{category_id, category_title}
posts{post_id, post_title}
users{user_id, user_title}
categories_posts{category_id, post_id}
users_posts{user_id, post_id}
モデル
class Model_User extends ORM {
protected $_primary_key = 'user_id';
protected $_has_many = array(
'posts'=> array(
'model' => 'post',
'through' => 'users_posts',
'far_key' => 'post_id'
),
);
}
class Model_Category extends ORM {
protected $_primary_key = 'category_id';
protected $_has_many = array(
'posts'=> array(
'model' => 'post',
'through' => 'categories_posts',
'far_key' => 'post_id'
)
);
}
class Model_Post extends ORM {
protected $_primary_key = 'post_id';
protected $_belongs_to = array(
'categories'=> array(
'model' => 'category',
'through' => 'categories_forums',
'far_key' => 'category_id'
),
'users'=> array(
'model' => 'user',
'through' => 'users_posts',
'far_key' => 'user_id'
)
);
}
画面
$categories = ORM::factory('category')->find_all();
foreach ($categories as $category) :
echo $category->category_title;
foreach ($category->posts->find_all() as $post) :
echo $post->post_title;
echo $post->users->user_title;
endforeach;
endforeach;
カテゴリと投稿は正しくエコーしますが、ユーザーはエコーしません。
users_postsに次のものがあるとします。
user_id post_id
1 1
1 2
1 3
2 4
上記のコードは、ユーザー1、ユーザー1、ユーザー1、ユーザー2の代わりに、ユーザー1、ユーザー2、NULL、NULLをエコーします。何らかの理由で、同じID番号を持っているため、PostOneとUserOneおよびPostTwoとUserTwoが一致します。
私は何が間違っているのですか?
エコーすると思われるものは次のとおりです。
Category One
Post One
User One
Post Two
User One
Category Two
Post Three
User One
Post Four
User Two
コードがエコーするものは次のとおりです。
Category One
Post One
User One
Post Two
User Two
Category Two
Post Three
NULL
Post Four
NULL