先说下需求:
查询某个表 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‘);
原文:https://www.cnblogs.com/makalochen/p/14487671.html