Home >Backend Development >PHP Tutorial >ThinkPHP 的模型使用详细介绍-模型的核心(7)

ThinkPHP 的模型使用详细介绍-模型的核心(7)

WBOY
WBOYOriginal
2016-06-13 12:11:18882browse

ThinkPHP 的模型使用详细介绍--模型的核心(七)

注意:本节是ThinkPhp框架对数据操作的核心处理部分 

    大家还是在这里看清楚可以将其剪切放到代码编辑器中查看


本章节给大家着重介绍模型的:

一、普通查询方式    、 二、表达式查询方式 、 三、区间查询      、  四、统计查询  、    五、SQL直接查询


回顾初步模型的-“增删改查”:

// 直接连接数据库,但是得先去配置文件中配置下才行

class IndexAction extends Action {
public function addDB(){
//对应数据库的表 ,一定要对应数据库的表名  大小没关系
$user =new Model('Leyangjun');
//$user = M('Leyangjun');  //等同上面的new Model()
$arr = $user ->select();
var_dump($arr);
}
}

//对数据库的 增删改查   操作(简称:CURD)

一:增 -C Create $m->add()
$m=new Model('User');
$m=M('User');
$m->字段名='值'; //$user->name='yangjun';
$m->add(); //返回值是新增的id号

二:删 -D Delete $m->delete()
$m=M('User');
$m->delete(2);               //删除id为2的数据,如果不写2,就会删除全部数据
$count = $m->where('id=2')->delete(); //与上面效果相同,也是删除id为2的数据
//返回值是受影响行数
if($count >0){
$this->success("数据删除成功!");
}else{
} $this->error("数据删除失败!"); 
三:改 -U Update $m->save()
$m=M('User');
$data['id']=1;
$data['name']='leyangjun';  //将id=1的name值改成leyangjun
$m->save($data);  //返回值是受影响行数

四:查 -R Read   $m->select()
$m=new Model('User');  ==   $m=M('User');
1:select
$m->select(); //获取所有数据,以数组形式返回
2:find
$m->find($id);//获取单条数据 默认取的是id=1的数据,想取第二条find(2)
3:getField(字段名)//获取一个具体的字段值
$arr = $m->getField('name'); //获取一个具体的字段值,默认读取的是第一条的name

$arr=$m->where('id=2')->getField('username'); //连贯操作,取id=2对应字段为“username”的值


下面对模型的详细介绍:

一、普通查询方式
a、字符串 (不推荐使用,因为:只要是字符串值,不加单引号会报错查不到数据)
$arr=$m->where("sex=0 and username='gege'")->find();  //取一条

b、数组(推荐使用,标准)
$data['sex']=0;
$data['username']='gege';
$arr=$m->where($data)->find();
=>注意:这种方式默认条件是and的关系,如果使用or关系,需要添加数组值
$data['sex']=0;
$data['username']='gege';
$data['_logic']='or';//要想查询条件是OR的条件,一定要加这个


$data['id']=array(2,3,4,'or'); //查id=2 or id=3 or id=4
$arr = $user->where($data)->select();

二、表达式查询方式
//默认是and  name='lekey' or name='viplekey' or name='leyangjun'
//$data['name']=array('lekey','viplekey','leyangjun','or'); 
$data['id']=array('lt',6);   //查询id大于6  ==>注意不区分大小写
$arr=$m->where($data)->select();
EQ 等于     
NEQ不等于
GT 大于
EGT大于等于
LT 小于
ELT小于等于
LIKE 模糊查询
$data['username']=array('like','%yang');
$arr=$m->where($data)->select();
NOTLIKE //like的取反
$data['username']=array('notlike','%ge%'); //notlike中间没有空格
$arr=$m->where($data)->select();


注意:如果一个字段要匹配多个通配符
$data['username']=array('like',array('%ge%','%2%','%五%'),'and');//如果没有第三个值,默认关系是or关系
$arr=$m->where($data)->select();
BETWEEN
$data['id']=array('between',array(5,7));
$arr=$m->where($data)->select();
//SELECT * FROM `tp_user` WHERE ( (`id` BETWEEN 5 AND 7 ) )
$data['id']=array('not between',array(5,7));//注意,not 和 between中间一定要有空格
$arr=$m->where($data)->select();
IN
$data['id']=array('in',array(4,6,7));
$arr=$m->where($data)->select();
//SELECT * FROM `tp_user` WHERE ( `id` IN (4,6,7) )


$data['id']=array('not in',array(4,6,7));
$arr=$m->where($data)->select();
//SELECT * FROM `tp_user` WHERE ( `id` NOT IN (4,6,7) )


三、区间查询
$data['id']=array(array('gt',4),array('lt',10));//默认关系是 and 的关系
//SELECT * FROM `tp_user` WHERE ( (`id` > 4) AND (`id`


$data['id']=array(array('gt',4),array('lt',10),'or') //关系就是or的关系


$data['name']=array(array('like','%2%'),array('like','%五%'),'leyangjun','or');
//SELECT * FROM 'TP_USER' WHERE (('username' LIKE '%2%') OR ('username' LIKE '%五%') OR ('USERNAME' ='leyangjun'));

四、统计查询
count //获取个数
$user = new Model('Leyangjun');
$total = $user->count();
/*带条件统计
//$data['name'] = 'leyangjun';
//$total = $user->where($data)->count(); */
echo $total;exit;
max   //获取最大数
min   //获取最小数
avg   //获取平均数
sum   //获取总和

五、SQL直接查询
一种、query 主要数处理(“读取”)数据的
成功返回数据的结果集
失败返回boolean false
$m=M();  //M()空的mode对象就行
$result=$m->query("select *  from t_user where id >50");
var_dump($result);
二种、execute 用于(“更新和写入”)操作
成功返回影响行数
失败返回boolean false
$m=M();
$result=$m->execute("insert into t_user(`username`) values('leyangjun')");
var_dump($result);

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn