Codeigniter - 对三个表中的数据进行排序

Codeigniter - Sort data from three tables

我有如下三个表格。主键突出显示,外键以斜体显示

  1. 项目任务 [ projecttasksid, projectstructureid, assignto, taskname ]

  2. 项目结构 [projectstructureid, projectid, structurename]

  3. 个项目 [projectid, projectname]

我可以通过比较 'assignto' 和会话数组中的用户 ID 来获取项目任务。 这样我就可以将任务分配给登录用户。

以 Codeigniter 方式从 'assignto' 字段中仅针对已登录用户/获取 'projectstructure' 和 'projects' 的最佳方法是什么。

我想写, get_structures() 和 get_projects()

代码,

$user_id    = $this->session->userdata('userID');

$data       = array('main_content'  => 'view_project_tasks_page',
                    'tasks'     => $this->projects->get_project_tasks($user_id),
                    'structures'    => $this->projects->get_structures(),
                    'projects'  => $this->projects->get_projects()  );

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

型号 - get_project_tasks($user_id)

function get_project_tasks($user_id)
{
$rules = array('assignto'   => $user_id );

$this->db->select()->from('projecttasks')->where($rules);
$sql_stmt = $this->db->get();
return $sql_stmt->result();
}

您搜索的是简单的右连接

在 "CodeIgniter way" 中应该看起来像这样(未测试)

function get_structures($user_id) {
    $rules = array('projecttasks.assignto' => $user_id );

    $this->db->select('projectstructure.*')
        ->from('projectstructure')
        ->join('projecttasks', 'projecttasks.projectstructureid = projectstructure.projectstructureid')
        ->where($rules);

    $sql_stmt = $this->db->get();
    return $sql_stmt->result();
}

function get_projects($user_id) {
    $rules = array('projecttasks.assignto' => $user_id );

    $this->db->select('project.*')
        ->from('projectstructure')
        ->join('projecttasks', 'projecttasks.projectstructureid = projectstructure.projectstructureid')
        ->join('project', 'projecttasks.projectid = project.projectid')
        ->where($rules);

    $sql_stmt = $this->db->get();
    return $sql_stmt->result();
}