Php Codeigniter中的查询表和相关表

Php Codeigniter中的查询表和相关表,php,sql,codeigniter,Php,Sql,Codeigniter,我在数据库中设置了两个表,“Posts”表和“Images”表。Images表中的行与Posts表中的ID相关联,因此在任何时候都可以有一个Post,但可以有多个来自分配给它的Images表的行。我不想运行联接,因为当它将帖子添加到图像中的每一行时,会导致Posts表中的内容重复 我希望能够通过以下方式迭代此内容: foreach(posts as post) { foreach(post['image'] as image) { // something her

我在数据库中设置了两个表,“Posts”表和“Images”表。Images表中的行与Posts表中的ID相关联,因此在任何时候都可以有一个Post,但可以有多个来自分配给它的Images表的行。我不想运行联接,因为当它将帖子添加到图像中的每一行时,会导致Posts表中的内容重复

我希望能够通过以下方式迭代此内容:

foreach(posts as post)
{
    foreach(post['image'] as image)
    {
        // something here
    } 
}
在Django中,可以通过以下方式在我的模型中进行设置:

class Posts

    # something here

   def get_images(self):
       return self.images_set.select_related('post')
是否可以在Codeigniter模型中使用其活动记录进行类似设置?我能做到这一点的唯一方法是在循环中查询Posts表、循环结果和查询Images表。然后将所有内容设置为新阵列,并将其发送到控制器。但这似乎根本没有效率。下面是一个例子:

public function get_posts()
{
    // Grab all posts
    $query = $this->db->get('posts_table');
    $results = $query->result_array();

    // Arrays for storage
    $photoArray = array();
    $postsArray = array();
    $postsResultArray = array();

    $postsResultArray[] = $results;

    // Query photos in DB
    foreach($photoResultArray[0] as $row)
    {
        $query = $this->db->get_where('uploads', array('tableName' => 'posts_table', 'recordNum' => $row['num'], 'fieldname' => 'images'));
        $results = $query->result_array();

        foreach($results as $row)
        {
            $photoArray[] = $row;
        }

    }

    // Associate each post with photo if available
    foreach($postsResultArray[0] as $post)
    {
        foreach($photoArray as $row)
        {
            if($row['recordNum'] == $post['num']) 
            {
                $post['image'] = $row['urlPath'];
            }
        }
        $postsArray[] = $post;
    }

    return $postArray;
}
试试这个

 public function get_posts()
 {
     // Grab all posts
     $query = $this->db->get('images');
     $results = $query->result_array();

     // Arrays for storage
     $photoArray = array();
     $postsArray = array();

     $photoResultArray[] = $results;

     // Query photos in DB
     foreach($photoResultArray as $row)
     {
         $photoArray[$row->id] = $row->image;
     }

     $query2 = $this->db->get('posts');
     $results2 = $query2->result_array();
     $postsResultArray[] = $results2;

     // Associate each post with photo if available
     foreach($postsResultArray[0] as $post)
     {
         $postsArray[] = $photoArray[$post->image_id];
     }

     return $postArray;
 }

你为什么不试着用左连接呢?桌子有多大?大约300排。我在避免使用连接,因为我不想在遍历帖子时出现重复的帖子行。如果一个表中的单个行与另一个表中的多个行相关,那么它们不会重复吗?