【问题标题】:Codeigniter : How to fetch different column data from foreign table using foreign key id?Codeigniter:如何使用外键 id 从外表中获取不同的列数据?
【发布时间】:2019-03-10 15:11:37
【问题描述】:

我能够成功获取下表中的数据。但是,在“班主任”列中,我想要教师姓名而不是教师 ID(外键)

这是数据库表

这是我在类视图中获取数据的方式

if( !empty($class_data) ) {
                                    foreach ($class_data AS $row) {
                                        ?>
                                        <tr>
                                            <td><?php echo $row->class_id; ?></td>
                                            <td><?php echo $row->grade; ?> </td>
                                            <td><?php echo $row->name; ?></td>
                                            <td><?php echo $row->capacity; ?></td>

                                            <td> <?php echo $row->teacher_id; ?></td>

我的控制器

function index()
{

    $teacher_data= $this->Tableview_model->fetch_teacher_data();
    $class_data = $this->Tableview_model->fetch_class_data();

    $data["teacher_data"]  =  $teacher_data;
    $data["class_data"]  =  $class_data;


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

function add_class()
{
    $class_data = array( 
        'class_id' => '',
        'grade' => $this->input->post('grade'),
        'name' => $this->input->post('class_name'),
        'capacity' => $this->input->post('capacity'),
        'teacher_id' => $this->input->post('class_teacher'),

    );


    $insert = $this->Model_Action->insertTable('class',$class_data);

    echo json_encode(array("status" => TRUE));


}

教师数据库表

创建表teacher (teacher_id int(11) NOT NULL AUTO_INCREMENT, t_f_name varchar(250) NOT NULL, t_last_name varchar(250) 非空,DOB 日期非空,t_emailvarchar(250) 非空,t_address varchar(500) 非空,t_telvarchar(150) 非空,t_username varchar(250) 非空,t_password varchar(500) 非空,qualifications varchar(5000) 非空, t_date_of_join 日期不为空,t_date_of_leaving 日期不为空, t_current_status int(1) 非空,主键 (teacher_id) ENGINE=InnoDB AUTO_INCREMENT=8 默认字符集=latin1

模型 fetch_class_data 函数

  function fetch_class_data()
  {
    $this->db->select("*");
            $this->db->from('class');

            $query=$this->db->get();

        if($query->num_rows() > 0) 
        {
            return $query->result();


        }else{
            return false;
        }


  }

【问题讨论】:

  • 可以分享teachers表结构和模型功能代码吗?
  • 我确实用教师表和模型函数代码更新了问题
  • 在下面回答。您需要使用联接来获取教师姓名。

标签: php sql ajax codeigniter


【解决方案1】:

您需要在classteacher 表之间使用JOIN。请将您的型号代码更改为:

$this->db->select('c.*, t.t_f_name, t.t_last_name')
         ->from('class c')
         ->join('teacher t', 'c.teacher_id = t.teacher_id');
$query = $this->db->get();

在您的视图中使用t_f_namet_last_name 作为全名,方法是连接它们

所以,替换

<td><?php echo $row->teacher_id; ?></td>

<td><?php echo $row->t_f_name . " " . $row->t_last_name; ?></td>

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2021-08-17
    相关资源
    最近更新 更多