如何使用 join codeigniter 从另一个表中获取值

Posted

技术标签:

【中文标题】如何使用 join codeigniter 从另一个表中获取值【英文标题】:how to get value from another table with join code igniter 【发布时间】:2020-03-22 03:41:43 【问题描述】:

我有 2 个从 1 个数据库连接的表,我需要从 "kategori" 表中获取 "kategori" 列并与 "artikel" 表连接。我无法获得"kategori" 列,它说

错误

未定义的索引:分类

控制器

public function edit($id)
        $this->load->helper('form');
        $this->load->library('form_validation');

        $this->form_validation->set_rules('judul', 'judul', 'required');
        $this->form_validation->set_rules('konten','konten','required');
        $this->form_validation->set_rules('id_kategori','id_kategori','required');

        if($this->form_validation->run()===false)
            $data['artikel'] = $this->m_daftar->ambil($id);
            $this->load->view('v_daftar_edit',$data);
        else
            $this->m_daftar->update($id);
            redirect('/daftar','refresh');
        
    

模型

public function ambil($id = FALSE)
    if($id===FALSE)
        $this->db->select('*');
        $this->db->form('artikel');
        $this->db->join('kategori', 'kategori.id_kategori = artikel.id_kategori');

        $query = $this->db->get();
        return $query->result_array();
    
    $query = $this->db->get_where('artikel',array('id'=>$id));
    return $query->row_array();

这是我的观点,我在编辑表格时需要它来显示值

查看

<select name="id_kategori" id="id_kategori" class="form-control">
    <option selected><?php echo $artikel['kategori']; ?></option>

</select>

对不起我的英语不好

【问题讨论】:

不应该 $this-&gt;db-&gt;form('artikel');$this-&gt;db-&gt;from('artikel'); 吗? 好吧,我意识到这个错字并修复它。但它并没有改变任何东西。我无法从“kategori”的另一列中获取值,但我可以从“artikel”中获取所有值,并且我一直注意到“kategori”中的另一列不存在 您的连接很可能不正确:尝试 kategori.id_kategori = artikel.id 或者您的表已连接... 【参考方案1】:

您需要定义要使用的连接,例如左、右、内、外

$this->db->join('kategori', 'kategori.id_kategori = artikel.id_kategori');

replace with 

$this->db->join('kategori', 'kategori.id_kategori = artikel.id_kategori','left');

【讨论】:

【参考方案2】:

请试试这个,我希望你的代码有问题。

public function ambil($id = FALSE)
    
    $select = ($id === FALSE) ? "artikel.*, kategori.kategori AS kategori" : "*";
    $this->db->select($select);
    $this->db->form('artikel');

    if($id===FALSE)

        $this->db->join('kategori', 'artikel.id_kategori = kategori.id_kategori', 'left'); // You need to define which Join you are going to use like left, right, inner, outer

        return $this->db->get()->result_array();
    
    
     return $this->db->get_where('artikel',array('id'=>$id))->row_array();

如果这不起作用,请引起我的注意,让我检查解决此问题的另一种方法。谢谢

【讨论】:

以上是关于如何使用 join codeigniter 从另一个表中获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Codeigniter从Join 2表中获取ID数据?

在连接中获取多行(codeigniter)

Codeigniter:从另一个控制器调用一个控制器的方法

codeigniter:从另一个方法调用索引方法

如何从另一种方法访问 StorageFile

如何使用 C# 从另一台服务器远程管理 IIS?