0

すべての学生のプロフィールとその結果を表示するページがあります。テーブル「ユーザー」に入力したすべてのユーザー情報と、すべての学生のさまざまなコースのスコアを示す別のテーブル「結果」があります。問題は、クエリまたはコントローラー関数を記述して、学生を対応する結果にリンクする方法がわからないことです。ここで助けが必要です ありがとう

コントローラ

        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 は、データベース テーブル user からすべての行を取得します。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();
         }
4

1 に答える 1

0

データベース スキーマがどのように見えるかはわかりませんが、私が解決できることから、これが得られました。コントローラーで生徒の配列を作成します。これを行うには、2 つのモデル関数を呼び出します。最初に呼び出すモデル関数は、'user' テーブル内のすべての生徒を取得します。モデルは、個々の生徒を取得するためにループできるコントローラーに配列を返します。ループの反復ごとに、「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 の仕組みを理解することは重要です。モデルでデータベースから選択したデータを練習し、そのデータをコントローラーを介してビューに渡します。すぐにコツがつかめます。

この回答でわからないことがあれば、コメントを残してお知らせください。

于 2013-08-20T15:55:27.783 に答える