如何将insert_batch发送到CodeIgniter中的多个表

时间:2018-09-12 14:06:34

标签: codeigniter codeigniter-3 bulkinsert

因此,我创建了一个类似于WordPress使用的标记系统。

我目前正在尝试使用帖子的编辑方法来修改我的实际代码。

假设我有两个表:

  • 条款
    • term_id(AI)
    • 标题
    • sl
  • 关系
    • id
    • term_id
    • 状态
    • 类型

实际的行为是我从条件表中获取了条件,但是只有它们存在时才会获取。

我想像WordPress所使用的那样完全编辑系统。...能够直接从输入中添加新术语(如果不存在)。

这是我的Controller编辑方法中的内容:

// Get attached categories
$categories = array();
$categories[0] = 'Select Categories';

$categories_attached = $this->Post_model->the_categories($id);

if (is_array($categories_attached) || is_object($categories_attached))
{
    foreach ($categories_attached as $cat)
    {
        $categories[$cat->term_id] = $cat->term_id;
    }
}

$data['categories'] = $categories;

// Select Categories    
$categories_options = array();
$categories_options[0] = 'Select Categories';

$categories_list = $this->Terms_model->get_list();

foreach($categories_list as $cat){
    $categories_options[$cat->term_id] = $cat->title;
}

$data['categories_options'] = $categories_options;

如您所见,一种方法是将附加的类别提取到特定帖子,而第二种方法是从术语表中获取类别(如果使用的话)。

我也有这个:

// Add/Remove term relationship
$this->Post_model->updateCats($id, $this->input->post('cat_id[]'));

转到我的Post模型,如果我取消选择其中任何一个类别,则将杀死其中的类别:

这是编辑帖子:

// Add/Remove categories
public function updateCats($id, array $arrSkills)
{
    //in case if the array is empty you can stop the process here
    if (empty($arrSkills)) {
        return false;
    }

    //kill all associated items
    $this->db->where('post_id', $id);
    $this->db->where('type', 'category');
    $this->db->delete('ci_relationship');

    //insert all items
    $arrInsertData = [];


    foreach($arrSkills as $strSkill)
    {
        $arrInsertData[] = [
            'post_id' => $id,
            'term_id' => $strSkill,
            'status'  => 'attached',
            'type' => 'category'
        ];
    }

    $this->db->insert_batch('ci_relationship', $arrInsertData);

    return true;
}

任何想法如何实现我的想法?

0 个答案:

没有答案