根据正常化保存文章和相关类别(Saving articles and related categor

2019-10-18 04:46发布

根据归一化节省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'].'&nbsp';
        }
?>

    <?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);
 }

任何帮助表示赞赏。 谢谢

Answer 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(不使用破灭!)

$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);

希望帮助!



文章来源: Saving articles and related categories according to normalization