如何使用Active Record从codeigniter中的另一个表中获取值?

时间:2014-12-13 23:46:57

标签: php mysql codeigniter

所以我有两个表,第一个就是这个, user_account 表。
此表用于登录。

ID | login_id | role    | password
---+----------+---------+---------
1  | 1110QA   | admin   | password  
2  | 1110QB   | teacher | password
3  | 1110QC   | teacher | password

这是我的第二张表,即老师表 我可以在这张桌子上获得老师的信息,就像她的名字一样。

ID | teacher_id | fname | mname   | lname   | email
---+------------+-------+---------+---------+---------------
1  | 1110QA     | John  | Vincent | Doe     | jvd1@gmail.com
2  | 1110QB     | Mary  | Pop     | Poppins | mpp2@gmail.com
3  | 1110QC     | Julie | Ken     | Clark   | jkc3@gmail.com

我想说的是我将userid(login_id)存储在user_account表中,并将用户详细信息存储在teacher表中。 所以我的问题是如何使用我登录的帐户访问教师表中的值?我读到了有关Active Record的信息,但我的代码仍无效。它不会打印任何东西,但它没有任何错误。所以这是我的代码。 我不确定我的查询是否正确以及我的控制器。

控制器:

class Site extends CI_Controller {
  public function teacher(){ 
    $this->load->model('model_teacher');
    $id = $this->input->post('idnum'); 
    $data['result'] = $this->model_teacher->scoreboard($id);
    $this->load->view('teacher/teacher', $data);
  }
}

型号:

 class Model_teacher extends CI_Model {
    public function scoreboard($id) {
        $query = $this->db->get_where('teacher', array('login_id' => '$id'));
        return $query->result_array();
    }
} 

查看:

<?php
    foreach ($result as $an) {
            echo $an['login_id'];
            echo $an['lname'];
            echo $an['mname'];
            echo $an['fname'];
        }
 ?>    

请帮助我,请耐心地告诉我们,我仍然是使用这种框架的新手..

1 个答案:

答案 0 :(得分:0)

您需要使用join; CodeIgniter reference(搜索联接)

class Model_teacher extends CI_Model {
    public function scoreboard( $id ) {

        $q = $this->db->select('user_account.login_id, teacher.*') //select what we need
                      ->join('teacher', 'user_account.login_id = teacher.teacher_id') //do join
                      ->where(['user_account.id' => $id]) //where clause
                      ->get('user_account'); 

        return ($q->num_rows() > 0) ? $q->result_array() : array(); //is there something to return? otherwise return an empty array
    }
}