更新关系mysql codeigniter

时间:2013-07-26 11:09:12

标签: mysql codeigniter

我有PostCategory表:

CREATE TABLE IF NOT EXISTS `PostCategory` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `PostID` int(11) NOT NULL,
  `CategoryID` int(11) NOT NULL,
  PRIMARY KEY (`ID`)
)

我们假设我有以下记录:

ID || PostID || CategoryID
===========================
1  ||   1    ||   1
2  ||   1    ||   2
3  ||   1    ||   3
4  ||   2    ||   2

当我需要更新ID为1的帖子类别时出现问题 现在,如果我更改帖子类别,我会得到这个数组:

$categories = array(1, 2, 4);

我想更新我的表,看起来像这样:

ID || PostID || CategoryID
===========================
1  ||   1    ||   1
2  ||   1    ||   2
4  ||   2    ||   2
5  ||   1    ||   4

正如您所看到的,我想再添加一个带有CategoryID 4的记录并使用CartegoryID 3删除记录,我想使用这样的一个模型:

$this->postCategory_model->update_post_categories($categories);

我无法弄清楚这种模型方法的正确结构。

寻找一些建议

谢谢!

1 个答案:

答案 0 :(得分:0)

确定删除旧版本比检查现有版本更新

更快
function update_post_categories($PostID, $categories) {
    $this->db->trans_start();
    //delete old cats
    $this->db->where('PostID', $PostID);
    $this->db->delete('Posts');
    //insert new ones
    foreach ($categories as $cat) {
        $this->db->set('PostID ', $PostID);
        $this->db->set('CategoryID', $cat);
        $this->db->insert('PostCategory');
    }

    $this->db->trans_complete();
}