thinkphp数组组装复杂条件

使用thinkphp的时候,我们会遇见一个比较麻烦的sql查询条件,比如 like、in,不等于(<>),大于,小于 等等,比较简单一点的使用方式如下:

Db::table('think_user')->where('id','<>',1)->select(); //就会生成sql条件 id <> 1 
# where 条件包含三个参数,分别是 字段、操作符、值

如果还想用一个数组组装sql的条件呢,看下面

$where = [];
$where[] = ['id','<>',1];
$where[] = ['age','=','10'];
$where[] = ['name','like','%小明%'];
$where[] = ['add_time',>,strtotime('2012-11-26')];
Db::table('think_user')->where($where)->select(); //注意此处 $where 是一个二维数组,每个条件是二维数组下面的一个元素,每个条件元素包含三个子元素,分别是字段、操作符、值
#以上操作会生成sql: select * from think_user where id <> 1 and age=10 and name like '%小明%' and add_time > '1353859200'

sql语句or的生成,如下

$where1 = [
    ['status','=',1],
    ['name','like','%小明%'
];
$where2 = [
    ['status','=',2],
    ['name','like','%小红%'
];
Db::table('think_user')->whereOr([$where1,$where2])->select();
//生成如下sql的or条件
// select * from think_user where (status=1 and name like '%小明%') or (status=2 and name like '%小红%');

thinkphp 随机获取几条数据的写法

Db::table('article')->where('status',1)->limit(6)->orderRaw("rand() , id DESC")->select();

You May Also Like