[codeigniter 四]、模型和辅助函数
2015-07-17 23:27
477 查看
1、模型。
(1)、什么是模型?
模型对于那些传统MVC方式的人来说是可选的。比如,我们之前讲的一些例子中就没有用到M层,那是由于我们暂时还没有涉及到与数据库的操作,一旦涉及到数据库操作,我们就要用M层了,因为模型(M)就是专门用来和数据库打交道的。
(2)、那怎么样创建一个模型呢?
其实模型就是一个PHP类,里面包含添加、删除、更新和统计数据等方法,我们来创建一个简单的看一下,代码如下:
此时我们需要注意以下几点:
a、创建的模型类文件应该放在application/models/ 文件夹,文件名应该是模型类名的小写格式。例如上例当中的,文件名应该为user_model.php;
b、类名的首字母必须大写,其他字母小写;
c、确保你的类继承了基本模型类(CI_Model)。
那这样的模型文件建好了,该怎么用呢?
(3)、载入模型。
我们写好的模型是通过控制器来载入和引用的。载入模型在CI中有两种方式:
一种是手动载入,假如我们想载入上面那个模型类,那它可以很容易的在控制器中的方法中装载,就像这样:
$this->load->model('User_model');
以上通常都放在控制器的构造函数中进行装载,毕竟这样只需要手动装载一次就够了。
另一种是自动载入,找到并打开 application/config/autoload.php
文件,然后在自动装载数组中加入这个模型,只要设置$autoload['model'] = array();为:
载入完模型之后,我们就可以使用它了:
由于我们会涉及到数据库操作,因此首先要进行数据库的配置,打开application/config/database.php文件,设置连接数据库的一些参数值,如下:
上面只是设置了其中一部分的参数,想了解更多你可以浏览CI中国的中文手册,http://codeigniter.org.cn/user_guide/database/configuration.html 。
然后我们开始建一个数据表,这里叫user表,表结构如下:
我们插入一条数据,如下:
接下来我们写一个用户模型,就起名为user_model.php,代码如下:
紧接着写控制器,起名为user.php,代码如下:
最后,我们开始写视图,代码如下:
好,现了我们打开浏览器,输入http://localhost/ci_demo/index.php/user/index即可访问到用户列表啦!
(1)、什么是模型?
模型对于那些传统MVC方式的人来说是可选的。比如,我们之前讲的一些例子中就没有用到M层,那是由于我们暂时还没有涉及到与数据库的操作,一旦涉及到数据库操作,我们就要用M层了,因为模型(M)就是专门用来和数据库打交道的。
(2)、那怎么样创建一个模型呢?
其实模型就是一个PHP类,里面包含添加、删除、更新和统计数据等方法,我们来创建一个简单的看一下,代码如下:
class User_model extends CI_Model { function __construct() { parent::__construct(); } //执行获取数据操作 function get() { //代码省略…… } //执行添加数据操作 function insert() { //代码省略…… } //执行更新数据操作 function update() { //代码省略…… } //执行删除数据操作 function delete() { //代码省略…… } }
此时我们需要注意以下几点:
a、创建的模型类文件应该放在application/models/ 文件夹,文件名应该是模型类名的小写格式。例如上例当中的,文件名应该为user_model.php;
b、类名的首字母必须大写,其他字母小写;
c、确保你的类继承了基本模型类(CI_Model)。
那这样的模型文件建好了,该怎么用呢?
(3)、载入模型。
我们写好的模型是通过控制器来载入和引用的。载入模型在CI中有两种方式:
一种是手动载入,假如我们想载入上面那个模型类,那它可以很容易的在控制器中的方法中装载,就像这样:
$this->load->model('User_model');
以上通常都放在控制器的构造函数中进行装载,毕竟这样只需要手动装载一次就够了。
另一种是自动载入,找到并打开 application/config/autoload.php
文件,然后在自动装载数组中加入这个模型,只要设置$autoload['model'] = array();为:
$autoload['model'] = array('user_model');
载入完模型之后,我们就可以使用它了:
$this->User_model->add(); $this->User_model->insert();
由于我们会涉及到数据库操作,因此首先要进行数据库的配置,打开application/config/database.php文件,设置连接数据库的一些参数值,如下:
$db['default']['hostname'] = 'localhost'; $db['default']['username'] = '你的数据库主机名'; $db['default']['password'] = '你的数据库密码'; $db['default']['dbdriver'] = 'mysql'; $db['default']['database'] = '你的数据库名';
上面只是设置了其中一部分的参数,想了解更多你可以浏览CI中国的中文手册,http://codeigniter.org.cn/user_guide/database/configuration.html 。
然后我们开始建一个数据表,这里叫user表,表结构如下:
create table user ( id int(11) auto_increment primary key not null, name varchar(30) not null default '', nickname varchar(50) not null default '', sex varchar(20) not null default '男', age int(11) not null default 0 );
我们插入一条数据,如下:
insert into user values(null,'Sulley007','冷不丁','男','24'); insert into user values(null,'Sulley','先生','男','23');
接下来我们写一个用户模型,就起名为user_model.php,代码如下:
<?php class User_model extends CI_Model { //获取用户信息 public function get() { $data = ''; //SQL语句的select部分,这里查询user表的所有字段 $this->db->select("*"); //运行选择查询语句并且返回结果集给$data $data = $this->db->get("user"); return $data; } } ?>
紧接着写控制器,起名为user.php,代码如下:
<?php class User extends CI_Controller{ //构造函数 function __construct() { parent::__construct(); //载入用户模型 $this->load->model("User_model"); } //显示用户信息列表 public function index() { //调用用户模型中的get方法,将结果集返回给$query $query = $this->User_model->get(); //将结果集作为关联数组返回 $data['userList'] = $query->result_array(); $this->load->view('user_index',$data); } } ?>
最后,我们开始写视图,代码如下:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>一个带模型的简单示例</title> </head> <body> <div> <table width="500px"> <tr> <th>ID号</th> <th>姓名</th> <th>外号</th> <th>性别</th> <th>年龄</th> </tr> <?php foreach ($userList as $item): ?> <tr style="text-align:center;"> <td><?php echo $item['id'] ;?></td> <td><?php echo $item['name'] ;?></td> <td><?php echo $item['nickname'] ;?></td> <td><?php echo $item['sex'] ;?></td> <td><?php echo $item['age'] ;?></td> </tr> <?php endforeach; ?> </table> </div> </body> </html>
好,现了我们打开浏览器,输入http://localhost/ci_demo/index.php/user/index即可访问到用户列表啦!
相关文章推荐
- Linux SSH 互信
- 【Leetcode】Valid Binary Search Tree
- DirectX11 创建顶点缓存
- Java中try-catch-finally的一点理解
- HDOJ 1016 Prime Ring Problem(dfs+回溯)
- xenserver
- 杭电ACM1069——Monkey and Banana~~动态规划
- 排序算法之快速排序
- jdk1.7新增的常用新特性
- Robot Framework-工具简介及入门使用
- 软件类笔试题整理
- xampp的安装和配置
- 安卓介绍(第一天)
- Java常用类源码探究(一):Object类
- 设计模式之职责链模式
- POJ 1840 Eqs 二分+map/hash
- bzoj 1012 最大数(线段树|单调队列|单调栈)
- (转)Dynamic Web project转成Maven项目
- Hive数据导出
- android 呼入电话的监听(来电监听)转