CodeIgniter从数据库中获取数据

时间:2011-12-03 20:25:59

标签: php codeigniter

在我的CodeIgniter项目中,我获取项目列表并在页面上成功输出它们。但是,应使用项目ID从DB中的不同表中检索该页面上其中一列中的数据。任何人都可以帮我弄清楚如何做到这一点?基本上我需要对指定项目ID的其他表进行另一个查询,但实际上并不知道如何使用CodeIgniter。

更新

在模型中,我将获得具有以下功能的项目列表:

function get_projects_list($page, $limit){
        $sql = sprintf("SELECT * FROM Project WHERE deleted != 1 LIMIT %d, %d", ($page-1)*$limit, $limit);
        $query = $this->db->query($sql);
        return $query->result();
    }

在控制器中我调用以下函数:

$projects_list = $this->Project_management_model->get_projects_list($curPage, self::$LIMIT_PER_PAGE);

        $data['projects_list'] = $projects_list;
        $data['cur_page'] = $curPage;
        $data['page_count'] = $pageCount;

        $this->load->view('project_management_view', $data);

在视图中,我只使用foreach运行$ data并将结果列在表中。在该表中,有一列我需要根据该行的项目ID显示另一个表的结果。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

public function get data()
{
     $this->db->flush_cache();
     $query = $this->db->get('project_table');
     $result = $query->result();
     $data   = array();
             for ($i = 0;$i < count($result);$i++)
         {
              $data[$i] = $result[$i];
              $data[$i]['project_data'] = temp($result[$i]->id);
         }
         return data;
}

private function temp($id = 0)
{
$this->db->flush_cache();
$this->where('id',$id);
$query = $this->db->get('project_table2');
$result = $query->result();
if (count($result) != 0)
return $result[0]->data;
}

你可以通过类似的东西来做,或者你可以通过数据库的查询功能使用子查询。

答案 1 :(得分:0)

您没有提及是否使用ActiveRecord。我假设你是。我猜也许你需要做的就是使用JOIN。

如果你使用的是直接SQL,你可以使用一些看起来像这样的SQL来做到这一点:

SELECT a.appointment_time, u.user_real_name FROM appointment a, site_user u WHERE u.site_user_id = a.user_id;

这将根据约会表中的用户ID从用户表中提取用户名,并将其与约会时间一起放入查询结果中。

使用ActiveRecord,您可以这样做:

$this->db->select('appointment_time,user_real_name')->from('appointment')->join('site_user', 'site_user_id=appointment_user_id');

但是你为什么不告诉我们你的问题呢?具体来说,您是否希望其他表中的此列与第一个表中的行相关?如果是这样,我的JOIN建议就是您所需要的。

答案 2 :(得分:0)

我实际上找到了一种使用自定义帮助程序的方法。创建一个新的帮助程序并将其加载到控制器中,可以选择在视图中使用该帮助程序中的函数。

感谢。