如何使用codeigiter从多个表关系更新数据

时间:2018-03-29 16:32:31

标签: php codeigniter

我的控制器

public function edit($id=''){

        $data['post'] = $this->posts->getpostbyid('posts',$id);
        $data['c'] = $this->posts->categories_post($id);
}

public function update()
    {
      $id = $this->input->post('id');
      $categories = $this->input->post('category');
      foreach ($categories as $category) {

            $data = array(
                'idcategory' => $category
            );
            $this->posts->updatepost('categories_detail', $data,$id);

        }

我的模特

public function updatepost($table,$data,$id)
    {
        $this->db->where('idpost', $id);
        return $this->db->update($table, $data);
    }
public function categories_post($id)
    {
        $this->db->select('categories.idcategory, categories.category_name');
        $this->db->from('categories');
        $this->db->join('categories_detail', 'categories_detail.idcategory = categories.idcategory', 'inner');
        $this->db->join('posts', 'posts.idpost = categories_detail.idpost', 'inner');
        $this->db->where('posts.idpost', $id);
        return $this->db->get()->result_array();
    }

我的观点

<input type="hidden" value="<?php echo $post['idpost'] ?>" name="id">
<?php
    foreach ($categories as $data) { ?>
       <div class="form-group">
          <input <?php foreach ($c as $cc) { echo $data->idcategory == $cc['idcategory'] ? 'checked' : ''; } ?> type="checkbox" name="category[]" value="<?php echo $data->idcategory ?>">&nbsp;&nbsp;<?php echo $data->category_name ?>
       </div>
<?php } ?>

在我的情况下,我有多个与多个db的关系;

  1. 帖子:idpost,post。
  2. 类别:idcategory,category_name
  3. categories_detail:id,idpost。 idcategory
  4. 问题是当我更新类别时,它只是插入1类别eventhought我检查2个或更多类别。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您正在使用帖子category_details更新id表,这将影响所有类别。对于多对多关系,id表中不需要categories_detail

如果您想轻松更新categories_detail表中的帖子类别。只需使用idpost表单categories_detail表删除特定帖子的所有数据,然后插入新的idpostidcategory

由于多对多的关系更新多列表中的列(在本例中为categories_detail表)非常复杂且不适合。