欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

ThinkPHP中的查询技巧总结

程序员文章站 2024-02-20 17:13:28
...
最近刚刚开始学习 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必须掌握的调试方法