根据规范化保存articles_categories
我有三张桌子
-----------
articles
-----------
id int(11)
title varchar(100)
-----------
categories
----------
id int(11)
title varchar(100)
-------------------
articles_categories
--------------------
articles_id int(11)
categories_id int(11)
我想根据规范化规则保存它以实现这样的
articles_id | categories_id
1 1
1 2
1 3
我如何通过代码点火器来实现谢谢。到目前为止,我已经尝试过这样的
查看| Create.php
<?php echo form_input('title','','id="title_input"'); ?><br>
Category
<?php
foreach ($categories as $c)
{
echo '<input type="checkbox" id="categories[]" name="categories[]" value="'.$c['id'].'">';
echo $c['title'].' ';
}
?>
<?php
echo form_submit('Submit',"Submit");
echo form_close();
?>
控制器| articles.php
function insert()
{
$this->articles_model->save();
}
模特| articles_model.php
function save(){
$title=$this->input->post('title');
$categories= implode(',',$_POST['categories']); //inputs will be 1,2,3
$data=array(
/* missing ideas.............*/
);
$this->db->insert('articles_categories',$data);
}
感谢任何帮助。感谢
答案 0 :(得分:1)
好的,所以你需要先保存你的文章并使用$this->db->insert_id()
来获取它的ID。
$title = $this->input->post('title');
$data = array('title' => $title);
$this->db->insert('articles', $data);
$article_id = $this->db->insert_id();
现在创建批处理操作以针对每个类别插入该ID(不要使用implode!)
$categories = $this->input->post('categories');
$data = array();
foreach($categories as $category_id){
$data[] = array(
'articles_id' => $article_id,
'categories_id' => $caregory_id
);
}
$this->db->insert_batch('articles_categories', $data);
希望有所帮助!