使用Join进行Codeigniter更新

时间:2015-08-13 01:34:15

标签: mysql codeigniter join

我尝试使用Codeigniter中的join更新我的表,但是我收到错误

  

未知栏' filter.ID_AREA'在' where子句

$this->db->join('filter', 'filter.ID_AREA = area.ID_AREA', 'left');
$this->db->set('ID_VERIFIKASI', '3');
$this->db->where('pelayanan.ID_AREA', $ID_AREA);
$this->db->where('filter.ID_AREA', $ID_AREA);
$this->db->where('filter.ID_RAYON', $ID_RAYON);
$this->db->where('pelayanan.ID_RAYON = filter.F1_RAYON');
$this->db->where('SUBSTR(TGLRUBAH, 3, 6) = filter.F1_BULANTAHUN');
$this->db->where('ID_VERIFIKASI', '2');
$this->db->where('ID_KENDALA is not null');
$this->db->update('pelayanan');
if ($this->db->affected_rows() > 0) {
        return true;
        } 
        else {
            return false;
        }

如何使用Codeigniter中的join更新表?

2 个答案:

答案 0 :(得分:0)

我建议您使用查询生成器避免更新加入。使用SQL字符串并进行查询。

根据我在您的代码段中看到的内容,您可能会尝试将其转换为以下内容:

>>> def f(i, n):
...   return i * i + 2*n
... 
>>> from itertools import repeat
>>> N = 10000
>>>
>>> from pathos.pools import ProcessPool as Pool
>>> pool = Pool()
>>>
>>> ans = pool.map(f, xrange(1000), repeat(20))
>>> ans[:10]
[40, 41, 44, 49, 56, 65, 76, 89, 104, 121]
>>>
>>> # this also works
>>> ans = pool.map(lambda x: f(x, 20), xrange(1000))
>>> ans[:10]
[40, 41, 44, 49, 56, 65, 76, 89, 104, 121]

这不是一个完美的查询,没有引用表" area"以及ID_VERIFIKASI和ID_KENDALA。我没有测试查询,但我很确定它会在JOIN中失败,但你明白了。由您来创建满足您需求的正确sql:)

希望它有所帮助!

答案 1 :(得分:0)

您可以尝试这种方法:

function edit_save($data, $post_id, $user_id)
{
    $this->db->set($data)
    $this->db->where('table1.user_id', $user_id);
    $this->db->where('table1.post_id', $post_id);
    $this->db->where('table1.data_id_fk = table2.data_id');
    $this->db->update('table1, table2');
}