【问题标题】:Join 3 tables with codeigniter and display it用 codeigniter 连接 3 个表并显示它
【发布时间】:2018-03-01 17:44:47
【问题描述】:

我想创建一个连接数据库。在“关系”表中将显示“疾病”,可以添加许多“症状”。我该怎么做?

这是我的数据库:

疾病:id_disease、名称、详细信息
症状:id_symptoms、名称、详细信息
关系:id_relation,id_disease,id_symptoms

这是我的模型

function get_allrelation() {
    $this->db->select('*');
    $this->db->from('relation');
    $this->db->join('disease','disease.id_disease = relastion.id_disease','left');
    $this->db->join('symptoms','symptoms.id_symptoms= relation.id_symptoms','left');

    $query = $this->db->get();
        return $query->result();
    }
}

请帮帮我。

【问题讨论】:

    标签: php mysql codeigniter join


    【解决方案1】:

    你有一个错字:你用 relastion.id_disease 代替了关系。

    下面的代码应该可以工作

    function get_allrelation() {
      $this->db->select('*');
      $this->db->from('relation');
      $this->db->join('disease','disease.id_disease = relation.id_disease','left');
      $this->db->join('symptoms','symptoms.id_symptoms= relation.id_symptoms','left');
    
      $query = $this->db->get();
      return $query->result();
    }
    

    【讨论】:

    • 我知道它有效。但我没有添加疾病数据。数据为空
    • 您在表格中的数据是什么?也可能是症状与疾病而不是症状有关。
    • 我已经从 user4419336 尝试过,它可以工作。之前控制器上几乎没有错误。谢谢你的帮助:)
    【解决方案2】:

    下面的控制器只是选择$this->db->select('relation.*, disease.*, symptoms.*');中的一个例子

    在控制器上,您可以将数据传递给视图并在视图中创建一个 foreach 循环。

    <?php
    
    class Somecontroller extends CI_Controller {
    
        public function index() {
    
            $data['allrelation'] = $this->allrelation();
    
    
            $this->load->view('example', $data);
    
        }
    
        function get_allrelation() {
            $this->db->select('relation.*, disease.*, symptoms.*');
            $this->db->from('relation');
            $this->db->join('disease','disease.id_disease = relastion.id_disease','left');
            $this->db->join('symptoms','symptoms.id_symptoms = relation.id_symptoms','left');
    
            $query = $this->db->get();
    
            if ($query->num_rows() > 0) {
                return $query->result();
            }
    
            return false
        }
    
    }
    

    【讨论】:

    • relation.*, disease.*, symptoms.* 在 Select 中使用 * 可能会导致将来出现模棱两可的列错误。所以最好指定列名而不是*
    猜你喜欢
    • 1970-01-01
    • 2022-11-18
    • 2020-03-28
    • 2019-01-10
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2019-08-07
    • 2013-12-14
    相关资源
    最近更新 更多