【问题标题】:CodeIgniter getting data from databaseCodeIgniter 从数据库中获取数据
【发布时间】:2011-12-03 20:25:58
【问题描述】:

在我的 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 显示另一个表的结果。

感谢您的帮助。

【问题讨论】:

  • 你想知道codeigniter中的subquery吗??

标签: php codeigniter


【解决方案1】:

你没有提到你是否使用 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 建议就是您所需要的。

【讨论】:

  • 根据您的更新,我认为 JOIN 可能确实是您需要的。不幸的是,出于某种原因,我仍然不清楚您要做什么。你能告诉我有问题的三列的名称吗? 1.从另一个表中你需要的列的名称是什么(table.column格式),2.第一个表中具有id的列的名称是什么(格式相同) , 和 3. 另一个表中的 id 列的名称是什么(与其他答案的格式相同)?
【解决方案2】:

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

谢谢。

【讨论】:

  • 既然您接受自己的答案而不是其他答案,您至少可以非常具体并准确地展示您所做的事情吗?这样你的问题对其他人更有帮助。谢谢。
【解决方案3】:
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;
}

你可以这样做,或者你可以通过数据库的查询功能使用子查询。

【讨论】:

    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    相关资源
    最近更新 更多