模型是专门用来和数据库打交道的 PHP 类。
创建模型类
dayrui/App/Test/Models/My.php
<?php namespace Phpcmf\Model; class My extends \Phpcmf\Model { function my_test() { return '模型类方法输出'; } }
请注意文件和类名的命名格式:文件首字母必须大写,类名首字母必须大写。
模型类调用方式
\Phpcmf\Service::M('类文件名', 'APP目录名')->方法(参数) 例如: \Phpcmf\Service::M('my', 'test')->my_test();
数据库对象用法
数据库对象调用方法
$this->db;
运行查询语句
$rt = $this->db->query("你的查询语句");
可参考手册:http://help.xunruicms.com/419.html
模型类数据操纵用法
一、组装方法
用于构造数据操作的条件方法,全部组装方法都返回数据对象,支持链式写法
1、设置数据表
$this->table("member") 解析为dr_member表
2、设置当前站点的数据表
$this->table_site("news", 1) 解析为dr_1_news表
3、设置where条件
$this->where("直接写条件"); $this->where("字段", "值");
4、设置where_in条件
$this->where_in("字段", "值");
5、设置排序条件
$this->order_by("字段", "值");
6、设置表自增主键,默认id
$this->id("字段", "值");
二、查询方法
1、查询SQL语句
$rt = $this->query(SQL)
数据返回:
$rt['code']:1成功,0失败 $rt['msg']:失败原因
2、查询全部数据
$this->组装方法->getAll($num, $key)
参数 | 介绍 |
---|---|
$num | 默认为全部表,本次查询的数据量 |
$key | 默认为0,本次查询按哪个字段作为数值主键,主键由0开始;如果填写id,那么主键就是id |
数据返回:多维数组类型
用法举例:
$this->table("member")->getAll(); // 全部会员数据 $this->table("member")->where("money>0")->getAll(); // 金额大于0的会员数据
3、按条件查询单个数据
$this->组装方法->getRow()
数据返回:一维数组类型
用法举例:
$this->table("member")->where("username", "admin")->getRow(); // 账号是admin的会员数据
4、按主键查询单个数据
$this->组装方法->get($id)
数据返回:一维数组类型
用法举例:
$this->table("member")->id('uid')->get(1); // uid=1的会员数据 $this->table_site("news")->get(1); // id=1的新闻主表内容
5、统计数据
$this->组装方法->counts("表名称")
数据返回:数字
用法举例:
\Phpcmf\Service::M()->where("catid", 1)->counts("1_news") 查询栏目id=1的新闻 \Phpcmf\Service::M()->counts("1_news") 全部新闻数据量
三、插入方法
$this->table("表名称")->id("主键字段")->insert(数据数组) 或者 $this->table("表名称")->id("主键字段")->replace(数据数组)
参数 | 介绍 |
---|---|
表名称 | 例如member |
主键字段 | 默认是id,就是表的自增字段 |
数据数组 | 数组格式,例如: array("字段名称" => "值", ....) |
数据返回:
$rt['code']:0失败;大于0,表示本条数据的主键值,自增值 $rt['msg']:失败原因
用法举例:
$rt = $this->table("test")->id("id")->insert([ "title" => "标题字段", "content" => "内容字段", ]); if($rt['code']) { // 成功 } else { // 失败 }
四、更新方法
$this->table("表名称")->id("主键字段")->update($id, 数据数组)
参数 | 介绍 |
---|---|
表名称 | 例如member |
主键字段 | 默认是id,就是表的自增字段 |
$id | 主键字段的值 |
数据数组 | 数组格式,例如: array("字段名称" => "值", ....) |
数据返回:
$rt['code']:0失败;大于0,表示本条数据的主键值,自增值 $rt['msg']:失败原因
用法举例:
$rt = $this->table("test")->id("id")->update(1, [ "title" => "标题字段", "content" => "内容字段", ]); if($rt['code']) { // 成功 } else { // 失败 }
五、删除方法
$this->table("表名称")->组装方法->id("主键字段")->delete($id)
参数 | 介绍 |
---|---|
表名称 | 例如member |
主键字段 | 可选, 默认是id,就是表的自增字段 |
$id | 可选, 主键字段的值 可选 |
数据返回:
$rt['code']:0失败;1成功 $rt['msg']:失败原因
用法举例:
$rt = $this->table("test")->id("id")->delete(1); 删除id=1的记录 $rt = $this->table("test")->where("cid", 2)->delete(); 删除cid=2的记录