无法将用户链接到相应的结果CODEIGNITER

时间:2013-08-20 15:32:07

标签: php mysql codeigniter join

我有一个页面,显示所有学生档案及其结果。我在表“用户”中提出的所有用户信息 然后我有另一张表“结果”,显示所有学生他们从不同课程的分数。问题是我不知道如何编写查询或控制器功能来链接学生与他们相应的结果。我需要一些帮助,谢谢

控制器

        function students()  
        {  
            $data = array(); 
            $this->load->model('kdg_model');
            $query = $this->kdg_model->get_students();
            $query2 = $this->kdg_model->get_resultStudent();
                if ($query)
                {
                    $data['user'] = $query;
                    $data['results'] = $query2;
                }

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

        } 

模型

get_students从数据库表用户获取所有行。 get_resultstudent从结果中获取所有行。试图将它们组合在一起,但它只是在每个配置文件上给我所有相同的行。

         function get_students(){
            $this->db->where('admin', 0);
            $query = $this->db->get('user');  
            return $query->result();
         }
         function get_resultStudent(){
            $this->db->select('*');
            $this->db->from('results');
            $this->db->join('user', 'user.id_user = results.FK_student');
            $query = $this->db->get(); 
            return $query->result();
         }

1 个答案:

答案 0 :(得分:0)

我不确定你的数据库模式是什么样的,但是从我可以解决的问题来看,我已经知道了。好的,在您的控制器中,您希望构建您的学生阵列。让我们通过调用两个模型函数来实现。我们将要调用的第一个模型函数,我们将所有学生都放在“用户”表中。该模型将一个数组传回控制器,我们可以循环访问控制器以获得各个学生。在循环的每次迭代中,我们可以将'id_user'传递给我们模型中的另一个函数,以获得该学生的结果。

//This is where we will store the students and their results
$aData['aStudentResults'] = array(); 

//Load the model we need
$this->load->model('kdg_model');

//Get an array of students
$aStudents = $this->kdg_model->get_students();

//Now we have an array of student id's let loop through these and for each student
//let get their results
foreach($aStudents as $student)
{
    //Add the student to the array
    //The student id (id_user) is the key
    $aData['aStudentResults'][$student->id_user] = $this->kdg_model->get_resultStudent($student->id_user);
}

//Pass out array of students to the view
$this->load->view('students_view', $aData);

这些是我们在控制器中调用的模型函数

//Get all the students that are not admins
function get_students(){
    $this->select('id_user')
        -from('user')
        ->where('admin', 0);
    $query = $this->db->get();  
    return $query->result();
}

//Use the id_user we were passed by the controller to get the results
function get_resultStudent($id_user){
    $this->db->select('*');
    $this->db->from('results');
    $this->db->where('FK_student', $id_user);
    $query = $this->db->get(); 
    return $query->result_array();
}

此时我们现在拥有了所需的所有数据。我们只需要通过传递视图$ aData将它从控件传递到我们所做的视图。在我们看来,我们可以像这样访问我们传递给它的内容

<? foreach($aStudentResults as $studentId => $aResults): ?>
    <p>Student id: <?= $studentId ?></p>

    <?foreach($aResults as $aResult): ?>
        //Do something with results
    <? endforeach; ?>
<? endforeach; ?>

这尚未经过测试,因此可能存在一些语法错误,但希望您应该知道我要做什么以及您需要做什么。

了解MVC的工作原理非常重要。在模型中练习数据库中的选定数据,然后通过控制器将数据传递给视图。你很快就会掌握它。

如果您在此答案中有任何不明白之处,请发表评论告诉我。