在我的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显示另一个表的结果。
感谢您的帮助。
答案 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)
我实际上找到了一种使用自定义帮助程序的方法。创建一个新的帮助程序并将其加载到控制器中,可以选择在视图中使用该帮助程序中的函数。
感谢。