tp5.1多条件组合查询

先说下需求:

查询某个表 is_permanent为1 或 start_time 小于等于当前时间 end_time 大于等于当前时间,再这个基础上type要等于2的数据,那这个复杂的查询条件要怎么写呢,这个就要用到tp 多条件组合查询了

官方文档:

https://www.kancloud.cn/manual/thinkphp5_1/354030

官方示例:

使用下面的多个条件组合

$map1 = [
        ['name', 'like', 'thinkphp%'],
        ['title', 'like', '%thinkphp'],
    ];
    
$map2 = [
        ['name', 'like', 'kancloud%'],
        ['title', 'like', '%kancloud'],
    ];    
    
Db::table('think_user')
    ->whereOr([ $map1, $map2 ])
    ->select();

生成的SQL语句为:

SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' ) OR ( `name` LIKE 'kancloud%' AND `title` LIKE '%kancloud' )

善用多维数组查询,可以很方便的拼装出各种复杂的SQL语句

实现需求写法

$w = ['is_permanent', '=', 1];
$w1 = [['start_time', '<=', time()], ['end_time', '>=', time()]];
$ids = HomeSetModel::whereOr([$w, $w1])->where('type', 2)->column('set_id');
posted @ 2021-03-05 18:03  makalo  阅读(624)  评论(0编辑  收藏  举报