CI框架模型的介绍
1:什么是模型?
1)模型就是一个对数据库操作的类
2)一个模型一般都是针对一张表的
3)类当中的方法都是针对功能的具体需求来做的,所以准确的说一个模型应该是针对一个模块的。
2:模型的存放目录
\application\models
3:创建一个模型其实就是创建一个类文件,但是这个类必须集成CI的模型核心类CI_Model,同时重载父类的构造方法
eg: class Model_test extends CI_Model{ //继承核心类 CI_Model
function __construct(){
parent::__construct(); //重载父类的构造方法
}
}
CI中提供了一个非常强大的CI数据库类(\system\database\DB_active_rec.php)可以实现对数据库的操作
在模型中加载这个类就可以使用其中的方法了
$this->db->方法名;
4:模型中对数据库的操作步骤
1) 配置数据库
在 application\config\database.php中配置(第51行开始配置hostname,username,password,database等信息)
2)如何创建文件,对一张数据表进行最基本的CURD操作
在application/model目录中建立自己的model文件,在才开始学习的时候最好养成一个好习惯,比如对用户操作的模型最好起名为usermodel.php,对商品表操作的模型起名为goodsmodel.php等
现在我们以test为例,建立文件testmodel.php
然后在testmodel.php文件中建立test类
class Testmodel extends CI_Model{ 类名首字母大写 并且继承CI的model类 CI_Model
function __construct(){
parent::__construct(); //重写构造方法
$this->load->database(); //加载数据库 数据库名在前面已经配置好
}
function test_insert($data){
$this->db->insert("table_name",$data);
}
//insert第一个参数为要操作的表名,$data为需要传入的数据
$data=array(
"键名1" => "值1",
"键名2" => "值2",
………………………………
)
function test_del($id){
$this->db->where("id",$id); //where的第一个参数为主键名 后面为控制器调用的时候传过来的值
$this->db->delete("table_name");
}
function test_update($id,$data){
$this->db->where("id",$id); //$id为 传过来的主键值 $data的规则和insert的一样
$this->db->update("table_name",$data)
}
function test_get($id=null){
if($id){ //id存在的情况下是指定某个id查询,id不存在的时候查询全部数据(暂时只是指定id查询,我们会在后面继续阐述多条件查询,连表查询以及分页等功能)
$this->db->where("id",$id);
}
$this->db->get("*"); //参数为字段名
$query = $this->db->get("table_name");
$obj =
$query->result();
return $obj; //返回的数据类型为对象
}
}
3)如何在控制器中调用我们建立好的model的方法。
class Test extends CI_Controller{
function add(){
$this->load->model("testmodel"); //model中的参数为对应的model名,即$this->load->model("模型名称");
$data = array( //data的规则在model的test_insert中已经讲过
"field1" => "value1",
"field2" => "value2",
……………………
);
$this->testmodel->test_insert($data);//即 $this->model的名称->model对应的方法
}
function update($id){
$this->load->model("testmodel");
$data = array(
"name" => "update",
"type" => "update",
);
$this->testmodel->test_update($id,$data);
}
function del($id){
$this->load->model("testmodel");
$this->testmodel->test_delete($id);
}
function get($id=null){
$this->load->model("testmodel");
$result = $this->testmodel->test_get($id);
}
//其实 $this->load->model("testmodel");可以写在构造方法__construct中
}