【问题标题】:Fetching data from 2 tables using codeigniter使用 codeigniter 从 2 个表中获取数据
【发布时间】:2017-04-04 17:09:39
【问题描述】:

我得到了以下表格:“Study”、“Users”、“Subjects”。

“学习”包括:(id,user_id[是表“用户”的“id”列的外键],subject_id[是表“id”列的外键”科目”]、年级、日期)

“用户”包括:(id、用户名、姓名、姓氏、密码、类型、状态、日期)

“主题”包括:(id、career_id、姓名、描述、小时数)

最后我想得到这样的东西:

不知道如何在 crudmodel/controller 文件中获取用户名、主题名称:S

这是我的 codeigniter 代码(我的视图文件):

                    <thead>
                    <th>id</th>
                    <th>User</th>
                    <th>Subject</th>
                    <th>Grade</th>
                    <th>Date</th>
                    <th>Action</th>
                </thead>

<tbody>
    <?php

    if (count($records) > 0 && $records != false) {
        foreach($records as $record) {

            echo "<tr>
                      <td>".$record->id."</td>
                      <td>".$record->user."</td>
                      <td>".$record->subject."</td>
                      <td>".$record->grade."</td>
                      <td>".$record->date."</td>
                      <td align='center'>
                        <a href='".site_url('Home/edit')."/$record->id'> 
                         <button type='button' class='btn btn-primary'>EDIT</button></a> |
                        <a href='".site_url('Home/delete')."/$record->id'> 
                         <button type='button' class='btn btn-danger'>DELETE</button></a>

                  </tr>";
        }

       }
    ?>

</tbody>

这是我的控制器文件:

  class Home extends CI_Controller{

     public function __construct(){
         parent::__construct();

         $this->load->model("Crudmodel");

    }
    public function index(){

        $data['records'] = $this->Crudmodel->getRecords();

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

    }

我的crudmodel:

class Crudmodel extends CI_Model{

    public function __construct(){
     parent::__construct();

     $this->load->database();

    }

    public function getRecords(){

        $this->db->select()//DONT KNOW WHAT TO DO
                 ->from()
                 ->join();

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

        if($q -> num_rows() > 0){

            return $q->result();
        }

        return false;

    }

希望你能帮助我

【问题讨论】:

  • 伙计,我要把所有的“用户名”放在用户栏里,把所有主题的名字放在主题栏里,我该怎么办?
  • 对于任何像这样的复杂查询,您应该首先编写一个返回所需结果的 SQL 查询。一旦它起作用了,你就可以相当容易地编写函数了。
  • @Programming_guy 检查以下答案

标签: php mysql codeigniter fetch


【解决方案1】:

试试这个

在控制器中

public function index(){

    # get all data in Study table
    $selectStudys = $this->Crudmodel->selectStudys();

    foreach ($selectStudys as $key => $study) 
    {
        # get UserNames
        $user = $this->Crudmodel->getName($study['user_id']);

        #get Subject Names
        $subject = $this->Crudmodel->getSubName($study['subject_id']);


        #append both NEW VALUES to same array


        $data[$key]['user_id'] = $user[0]['username'];
        $data[$key]['subject_id'] = $subject[0]['name'];

    }

    # Early it was id, Now it has name
    /*
        Example
        ---------
         - Early in user_id 2
         - Now in user_id Mathamatics

    */

    // print_r($data); # check the output

    $data['records'] = $selectStudys;
    $this->load->view('home', $data);

}

在模型中

function selectStudys()
{
    $query= $this->db->query("SELECT * FROM study");
    $result = $query->result_array();
    return $result;
}

function getName($name)
{
    $query= $this->db->query("SELECT username FROM Users WHERE id = $name ");
    $result = $query->result_array();
    return $result;
}

function getSubName($subject)
{
    $query= $this->db->query("SELECT name FROM Subjects WHERE id = $subject ");
    $result = $query->result_array();
    return $result;
}

【讨论】:

  • 但是,我的索引函数朋友呢?
  • 什么索引函数??
  • 公共函数索引(){ $data['records'] = $this->Crudmodel->getRecords(); $this->load->view('home', $data); }
  • 上面的控制器功能在里面
  • 只有你必须评论print_r($data);并添加$this-&gt;load-&gt;view('home', $data);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多