插入,更新,删除 - >归一化&代码点火器 [英] Insert , Update , Delete -> Normalization & Code Igniter

查看:74
本文介绍了插入,更新,删除 - >归一化&代码点火器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用表格和规范化



我有三个表格

  ----------- 
articles
-----------
id int(11)auto_increment
title varchar(100 )


-----------
类别
----------
id int 11)auto_increment
title varchar(100)


-------------------
article_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> 
类别
<?php
foreach($ categories as $ c)
{
echo'< input type =checkboxid =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



Thomas Clayson已帮助插入问题。



根据规范化存储文章和相关类别

  function insert()
{
$ title = $ this-> input-> post('title');
$ data = array('title'=> $ title);
$ this-> db-> insert('articles',$ data);
$ article_id = $ this-> db-> insert_id();
$ categories = $ this-> input-> post('categories');
$ data = array();

foreach($ categories as $ category_id)
{
$ data [] = array(
'article_id'=> $ article_id,
' categories_id'=> $ caregory_id
);
}
$ this-> db-> insert_batch('articles_categories',$ data);
}

这是删除方法

  function delete($ id)
{
$ this-> db-> delete('articles',array('id'=& $ id));
}

我现在坚持使用更新方法

 函数更新($ id)
{
$ id = $ this-> input-> post('id');
$ title = $ this-> input-> post('title');
$ categories = $ _POST ['categories'];

$ data = array(
'title'=> $ title,
);

$ this-> db-> where('id',$ id);
$ this-> db-> update('articles',$ data);
/ *可以更新文章表现在* /


/ *这里是缺少的想法和我做了到目前为止* /
$ bb = array );
foreach($ categories as $ categories_id)
{
$ bb [] = array(
'article_id'=> $ id,
'categories_id'=> ; $ categories_id
);
}
$ this-> db-> update('articles_categories',$ bb);
/ *缺少想法的结束* /
}

函数select($ id)
{
$ query = $ this-& > get_where('articles',array('slug'=> $ slug));
return $ query-> row_array();

/ *缺少想要解除类别的想法* /
}

函数select_categories()

{
/ *取消类别的想法* /
}

感谢您的帮助

解决方案

如果您需要用新值更新articles_categories表,有一些方法可以做到。但是我的提议是通过文章ID删除所有关系,然后再次插入它们。这是更新关系表的最好方法。为此,您可以拆分插入模型;

  function insert(){
$ title = $ this-> ; input-> post('title');
$ data = array('title'=> $ title);
$ this-> db-> insert('articles',$ data);
$ article_id = $ this-> db-> insert_id();
$ categories = $ this-> input-> post('categories');
$ this-> insert_relations($ article_id);
}

function insert_relations($ article_id,$ 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);
}

您需要删除关系模型;

  function delete_relations($ articles_id){
$ this-> db-> delete('articles_categories',array('id'=& $ articles_id));
}

您需要更改缺少的部分;

  / *这里是缺少的想法和我到目前为止做的* / 
$ this-> delete_relations($ id);
$ this-> insert_relations($ id,$ categories);
/ *缺少想法结束* /


Working with tables and normalization

I have three tables

-----------
articles  
-----------
id  int(11)  auto_increment 
title varchar(100)


-----------
categories
----------
id  int(11) auto_increment 
title varchar(100)


-------------------
articles_categories
--------------------
articles_id  int(11)
categories_id int(11)

I want to save it according to normalization rule to achieve like this

articles_id  | categories_id
     1                1 
     1                2 
     1                3 

How can I achieve with code igniter thanks. So far I had already tried like this

View | 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();
    ?>

Controller | articles.php

function insert()
{
    $this->articles_model->save();

}

Model | articles_model.php

Thomas Clayson already help with insert issue.

Saving articles and related categories according to normalization

function insert()
{
      $title = $this->input->post('title');
      $data = array('title' => $title);
      $this->db->insert('articles', $data);
      $article_id = $this->db->insert_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);
}

This is delete method

function delete($id)
{
     $this->db->delete('articles',array('id'=>$id));
}

I am now stuck with update method

function update($id)
{
    $id= $this->input->post('id');
    $title=$this->input->post('title');
    $categories = $_POST['categories'];

    $data=array(
        'title'=>$title,
    );

    $this->db->where('id', $id);
    $this->db->update('articles',$data);
    /*can update articles table now */


    /* here is the missing idea and what I had done so far*/
    $bb = array();
    foreach($categories as $categories_id )
    {
      $bb[] = array(
        'articles_id' => $id ,
    'categories_id' =>$categories_id 
      );                    
    }
    $this->db->update('articles_categories',$bb);
    /* end of missing idea */
}

   function select($id)
   {
     $query=$this->db->get_where('articles',array('slug'=>$slug));
     return $query->row_array();    

      /*missing idea to retieve categories */
   }

  function select_categories()

  {
     /*missing idea to retieve categories */
  }

Thanks for help

解决方案

If you need to update articles_categories table with new values, there are some ways to do it. But my offer is deleting all relations by article id, and then insert them again. It's the best way to update relations table. To do that you can split you insert model;

function insert() {
    $title = $this->input->post('title');
    $data = array('title' => $title);
    $this->db->insert('articles', $data);
    $article_id = $this->db->insert_id();
    $categories = $this->input->post('categories');
    $this->insert_relations($article_id);
}

function insert_relations($article_id,$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);
}

and you need delete model for relations;

function delete_relations($articles_id) {
    $this->db->delete('articles_categories',array('id'=>$articles_id));
}

and you need to change your missing part like that;

/* here is the missing idea and what I had done so far*/
$this->delete_relations($id);
$this->insert_relations($id,$categories);
/* end of missing idea */

这篇关于插入,更新,删除 - &gt;归一化&amp;代码点火器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆