其他分享
首页 > 其他分享> > CI(3)

CI(3)

作者:互联网

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中

}

标签:CI,testmodel,test,model,data,id
来源: https://blog.51cto.com/u_12953715/2738906