关闭

thinkphp where 高级一点的查询

494人阅读 评论(0) 收藏 举报
分类:

先讲重点:实现不同字段相同的查询条件

$User = M("User"); // 实例化User对象
$map['status&title'] =array('1','thinkphp','_multi'=>true);
 // 把查询条件传入查询方法
$User->where($map)->select();

'_multi'=>true必须加在数组的最后,表示当前是多条件匹配,这样查询条件就变成 status= 1 AND title = 'thinkphp' ,查询字段支持更多的,例如:


$map['status&score&title'] =array('1',array('gt','0'),'thinkphp','_multi'=>true);

查询条件就变成 status= 1 AND score >0 AND title = 'thinkphp'

注意:快捷查询方式中“|”和“&”不能同时使用。

今天有人问了我一个如何写登录,其中可以邮箱,电话号码,用户名登录,然后发现自己的查询写的好渣渣。只会写$map['id'] = 100;不能忍,其实也可以写作

$map['id'] =array('eq',100);那么同样道理,其中的eq可以换做neq,gt,lt等等
$map['name'] =array('like','thinkphp%');

查询条件就变成 name like 'thinkphp%'如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。例如设置了:


'DB_LIKE_FIELDS'=>'title|content'

的话,使用


$map['title'] ='thinkphp';

查询条件就会变成 name like '%thinkphp%'
支持数组方式,例如



$map['a'] =array('like',array('%thinkphp%','%tp'),'OR');
$map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');

生成的查询条件就是:


(a like'%thinkphp%' OR a like '%tp')AND (b notlike '%thinkphp%'AND b notlike '%tp')

[NOT] BETWEEN :同sql的[not] between, 查询条件支持字符串或者数组,例如:


$map['id'] =array('between','1,8');

和下面的等效:


$map['id'] =array('between',array('1','8'));

查询条件就变成 id BETWEEN 1 AND 8

[NOT] IN: 同sql的[not] in ,查询条件支持字符串或者数组,例如:


$map['id'] =array('not in','1,5,8');

和下面的等效:


$map['id'] =array('not in',array('1','5','8'));
抄了一些简单的,具体的可以去http://www.jb51.net/article/51218.htm

0
0
查看评论

thinkphp复合WHERE查询的写法

where (id != 5 and age > 20 ) or (id > 15 and age 用 $map['_complex'] 例如: $where['name'] = array('like','%thin...
  • A9925
  • A9925
  • 2015-07-20 09:47
  • 2125

ThinkPHP Where 条件中常用表达式示例

Where 条件表达式格式为: $map['字段名'] = array('表达式', '操作条件'); 其中 $map 是一个普通的数组变量,可以根据自己需求而命名。上述格式中的表达式实际是运算符的意义: ThinkPHP运算符 与 SQL运算...
  • aoyoo111
  • aoyoo111
  • 2017-01-25 00:14
  • 545

thinkphp where 查询比较相同一个表中两个字段值

$where['status'] = array('eq',2); $Bills = D("order"); $list = $Bills->where($where)->where('months>donemon...
  • viqecel
  • viqecel
  • 2017-09-03 10:13
  • 850

Thinkphp M 中的 where 失效问题

在编写Thinkphp框架的项目时,使用M方法很方便,但有时使用where等方法生成sql语句时会失效,这与where的位置有关,是thinkphp3.2.3及以下版本的bug,举例: 如下代码不会生成where条件, $where['id'] = $ID; $arr_fie...
  • hxmcnu
  • hxmcnu
  • 2015-07-27 12:47
  • 817

[thinkphp]多查询语句拼接(And、Or)

SELECT * FROM `ecs_order_info` WHERE ( ( `order_status` = 5 AND `shipping_status` = 2 ) OR `order_status` = 6 ) AND `user_id` = 1 上面标红的where查询语句在TP中的...
  • landylxy
  • landylxy
  • 2017-04-12 10:27
  • 972

87 thinkphp 和sql查询条件为某字段不为空的情况

1.今天遇到了一个问题,查询条件为某个字段不为空,于是构造map $map['top'] = 1; $map['sectorid'] = 1; $map['thumbnail'] = array(...
  • fancivez
  • fancivez
  • 2015-09-05 16:52
  • 5465

thinkPHP3.2中join与field,order,where的配合使用

public function yjggAction(){ //要接广告 $readhehe=M('public_adv'); $mycontent=M("mytext"); $ccc=$readhehe->join('tp_mytext ON t...
  • u013239233
  • u013239233
  • 2016-08-24 14:52
  • 751

thinkphp有条件的查找数据库里的数据,用 where 查找

thinkphp有条件的查找数据库里的数据,用 where 查找 public function getBarMenus() { $data = array( 'status' => 1, '...
  • qq_22823581
  • qq_22823581
  • 2017-04-19 10:17
  • 581

thinkphp多表查询两表有重复相同字段解决方法

框架:thinkphp 版本:3.2.3 内容:查询语句 解决问题:重复字段问题 $Data = M('a')->where($where) ->Field('a.name a...
  • hj960511
  • hj960511
  • 2016-07-15 11:11
  • 4659

Thinkphp 多表查询 join table用法 同名字段查询

ThinkPHP join() table()方法的使用,多表查询 ThinkPHP模型类​比较常用的两个方法,table() join() table $list = M()->table('user1 a, user2 b')->where('...
  • first236108
  • first236108
  • 2017-08-19 21:18
  • 439
    个人资料
    • 访问:10442次
    • 积分:280
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:3篇
    • 译文:1篇
    • 评论:0条
    文章分类