我试图将更新数据放入多个具有某种连接关系的表中,这是我的表格。
no_form | no_lahan | t_utama
no_lahan | JENIS
这是我的控制器名为 c_read
function upAksi(){
$no_form = $this->input->post('noform');
$no_lahan = $this->input->post('nolahan');
$t_utama = $this->input->post('tutama');
$jenis = $this->input->post('jlahan');
$this->m_read->upAksi($no_form, $no_lahan, $t_utama, $jenis);
redirect('c_read');
}
这是我的模型,名为 m_read
function upAksi($no_form, $no_lahan, $t_utama, $jenis){
$this->db->set('input_pen.t_utama', $t_utama);
$this->db->set('lahan.jenis', $jenis);
$this->db->where('input_pen.no_form', $no_form);
$this->db->where('input_pen.no_lahan', $no_lahan);
$this->db->update('input_pen JOIN lahan ON input_pen.no_lahan= lahan.no_lahan');
}
我做错了吗?该代码发出了一些错误,如我已经在phpmyadmin中检查了查询,并且运行良好
UPDATE input_pen JOIN lahan ON input_pen.no_lahan = lahan.no_lahan
SET input_pen.t_utama = 'PADI', lahan.jenis = 'Lahan Rawa'
WHERE input_pen.no_form = 42 AND input_pen.no_lahan = 71
答案 0 :(得分:1)
Codeigniter活动记录不允许更新已连接的表。
尝试各种方法并搜索解决方案后。通过使用以下方法,您可以使用Codeigniter活动记录更新多个表。
$this->db->set('a.firstname', 'Pekka');
$this->db->set('a.lastname', 'Kuronen');
$this->db->set('b.companyname', 'Suomi Oy');
$this->db->set('b.companyaddress', 'Mannerheimtie 123, Helsinki Suomi');
$this->db->where('a.id', 1);
$this->db->where('a.id = b.id');
$this->db->update('table as a, table2 as b');
在看到您的最终评论后,我建议您单独进行。
//First Table Update
$this->db->set('a.t_utama', $t_utama);
$this->db->where('a.no_form', $no_form);
$this->db->where('a.no_lahan', $no_lahan);
$this->db->update('input_pen as a');
// Second Table Update
$this->db->set('b.jenis', $jenis);
$this->db->where('b.no_lahan', $no_lahan);
$this->db->update('lahan as b');
事件无法帮助您在$this->db->query( your query );
中使用您的工作查询。
这就是我所能提出的建议。希望它会有所帮助。
答案 1 :(得分:0)
在update-method添加的生成的查询中似乎有额外的反引号。尝试删除额外的空间,看看它是否有帮助:
$this->db->update('input_pen JOIN lahan ON input_pen.no_lahan=lahan.no_lahan');