插入,更新,删除 - >归一化&代码点火器 [英] Insert , Update , Delete -> Normalization & Code Igniter
问题描述
使用表格和规范化
我有三个表格
-----------
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'].' '; } ?> <?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 */
这篇关于插入,更新,删除 - >归一化&代码点火器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!