我的控制器
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 ?>"> <?php echo $data->category_name ?>
</div>
<?php } ?>
在我的情况下,我有多个与多个db的关系;
问题是当我更新类别时,它只是插入1类别eventhought我检查2个或更多类别。 我该如何解决这个问题?
答案 0 :(得分:0)
您正在使用帖子category_details
更新id
表,这将影响所有类别。对于多对多关系,id
表中不需要categories_detail
。
如果您想轻松更新categories_detail
表中的帖子类别。只需使用idpost
表单categories_detail
表删除特定帖子的所有数据,然后插入新的idpost
和idcategory
。
由于多对多的关系更新多列表中的列(在本例中为categories_detail
表)非常复杂且不适合。