一、模型:
1.模型是一个数据库类
2.一个模型针对一张表
3.类中的方法是针对功能的具体需求而做的
模型存放目录 /models/
创建目录就是创建一个类文件:必须继承数据核心类CI_Model,同时重载父类中的构造方法
class Model_name extends CI_Model { function _construct() { parent::_construct(); } }
二、利用CI 创建模型
ci提供数据库函数类 Active Record 类 \system\database\DB_active_rec.php
在模型中使用Active Record类中的方法 $this -> db -> 方法名() 例:$this ->db->get('entries',10);
三、利用CI模型操作数据库
链接数据库(写在构造函数里面,加载的同时连接了数据库)
$this->load->database();
插入数据
$this->db->insert($t_name,$data);//$t_name要操作的表,$data要插入的数据(键名=字段名,键值=字段值)
更新数据
$this->db->where(字段名,字段值) //定位 $this->db->update(表名,修改值得数组);
删除数据
$this->db->where(字段名,字段值); $query=$this->db->delete(表名);
查询数据
$this->db->where(字段名,字段值); $this->db->select(字段); $query=$this->db->get(表名); return $query->result();
四、在控制器中调用模型
$this->load->model(模型) $this->模型名->方法名
五、例子对数据库表增删改查
模型
class Test_m extends CI_Model { function _construct() { parent::_construct();//重载父类构造 $this->load->database();//加载数据库 } function user_insert($arr) { $this->db->insert('user',$arr); } function user_update($id,$arr) { $this->db->where('uid',$id);//定位 $this->db->update('user',$arr); } function user_del($id){ $this->db->where('uid',$id); $this->db->delete('user'); } function user_select($id){ $this->db->where('uid',$id); $this->db->select('*'); $query= $this->db->get('user'); return $query->result(); } }
控制器
class User extends CI_Controller { function insert(){ //插入 $this->load->model('test_m'); $arr = array('uname'=>'u1','upass'=>'1234'); $this->test_m->user_insert($arr); } function update(){//更新 $this->load->model('test_m'); $arr = array('uname'=>'u1','upass'=>'123'); $this->test_m->user_update( 1 ,$arr); } function del(){//删除 $this->load->model('test_m'); $this ->test_m->user_del(1); } function select(){ $this->load->model('test_m'); $array=$this->test_m->user_select(2); //var_dump($array); 打印变量的相关信息 echo $array[0]->uid; } }
注意:
操作数据库前 现对数据库配置文件进行设定:config,database
$db['default']['username'] = 'root';
$db['default']['database'] = 'ci'; 创建的数据库名称
最开始时遇见一个bug:Call to a member function insert() on a non-object
解决:在config ,autoload文件里$autoload['libraries'] = array('database'); 参数database