首页 >php教程 >php手册 >ThinkPHP中的查询技巧总结

ThinkPHP中的查询技巧总结

WBOY
WBOY原创
2016-06-13 09:36:30871浏览

最近刚刚开始学习 thinkphp 这套框架,对于Thinkphp的强大真的是让哥叹为观止,其抗压能力,性能如何这个暂不讨论,下面就分享一下 thinkphp 强大的查询功能,当然这里只是抛砖引玉而已。

一、带where条件的普通查询
  
1、字符串形式

$user=M('user');
$list=$user->where('id>5 and idselect();
$list=$user->where($data)->select();

2、数组形式

$user=M('user');
$list=$user->where(array('username'=>'www.phpernote.com'))->select();
$list=$user->where($data)->select();

3、对象形式

$user=M('user');
$a=new stdClass();
$a->username='www.phpernote.com';
$list=$user->where($a)->select();   

4、查询表达式

EQ              等于
NEQ             不等于
GT              大于
EGT             大于等于
LT              小于
ELT             小于等于
LIKE            等价与sql中的like
[NOT] BETWEEN   查询区间
[NOT] IN        查询集合
EXP             指使用标准SQL语句,实现更加复杂的情况

语法格式:$data['字段名']=array('是表达式','查询条件');

例如

$data['username']='www.phpernote.com';

实际上是指

$data['username']=array('eq','www.phpernote.com');

$data['username']=array('like','peng%');
$list=$user->where($data)->select();

$data['username']=array(array('like','p%'),array('like','h%'),'or');
$list=$user->where($data)->select();

二、区间查询

$user=M('user');
$data['id']=array(array('gt',20),array('lt',23),'and');
$list=$user->where($data)->select();

三、组合查询

$user=M('user');
$data['username']='pengyanjie';
$data['password']=array('eq','pengyanjie');
$data['id']=array('lt',30);
$data['_logic']='or';
$list=$user->where($data)->select();
dump($list);

四、复合查询

$user=M('user');
$data['username']=array('eq','pengyanjie');
$data['password']=array('like','p%');
$data['_logic']='or';
$where['_complex']=$where;
$where['id']=array('lt',30);
$list=$user->where($data)->select();

相当于

(id

五、统计查询

echo $user->count();
echo '
';
echo $user->max('id');
echo '
';
echo $user->where('idmin('id');
echo '
';
echo $user->avg('id');
echo '
';
echo $user->sum('id');

六、定位查询

$user=new AdvModel('user');//实例化高级模型AdvModel
//$user=M('user','CommonModel');//或者将AdvModel用CommonModel来继承
$list=$user->order('id desc')->getN(2);//返回结果中的第三条
$list=$user->order('id desc')->last();//返回最后一条
$list=$user->order('id desc')->first();//返回第一条

七、SQL查询

excute()主要用于更新和写入

$Model=new Model()  //  实例化一个 model 对象,没有对应任何数据表
$Model->execute("update think_user set name='thinkPHP' where status=1");

query()主要用于查询    

$user=M();
$list=$user->query('select * from aoli_user order by id desc');
dump($list);           

八、动态查询

$user=M('user');
$list=$user->getByusername('pengyanjie');
$list=$user->getByusername('pengyanjie');

$user=new AdvModel('user');
$list=$user->top5();//前5条

您可能感兴趣的文章

  • thinkphp模板中判断volist循环的最后一条记录
  • thinkphp开发技巧总结
  • php中的MVC模式运用技巧
  • thinkphp like 查询
  • thinkphp 的 Action 控制器中的系统常量总结
  • thinkphp截取中文字符串的方法
  • thinkphp自动验证与自动填充无效的解决办法
  • 使用ThinkPHP必须掌握的调试方法
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn