如何使用 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->db->form('artikel');
是 $this->db->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 从另一个表中获取值的主要内容,如果未能解决你的问题,请参考以下文章