thinkphp where array高级用法

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

$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 not like '%thinkphp%' AND b not like '%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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值