条件复杂组合查询 (whereRaw)

想满足的sql:

SELECT
	* 
FROM
	`p_notice` 
WHERE
	( ( send_time <  (当前时间) AND user_type = 20 AND `json` LIKE '%123456%' ) OR ( send_time < (当前时间)AND user_type = 10 ) ) 
ORDER BY
	`send_time` DESC

所在框架:thinkphp6
解决方式:_logic 和 _complex,结果 : 失败

 $time = time();
 $where_1['user_type'] = ['eq',10];
 $where_1['send_time'] =  ['lt', "$time"];
 $where_1['_logic'] =  'or';
 $map['_complex1']= $where_1;
 
 $where_2['user_type'] =  ['eq', 20];
 $where_2['send_time'] = ['lt', "$time"];
 $where_2['user_json'] = ['like', "%$no%"];
 $map['_complex2'] = $where_2;
 $list = Db::name('notice')->where($map)->select();

解决方式:whereRaw,结果: 成功

 $time = time();
 $whereOrRaw = "(send_time < {$time} AND user_type = 20 AND `json` LIKE '%{$no}%') or (send_time < {$time} AND user_type = 10)";
 $list = Db::name('notice')->whereOrRaw($whereOrRaw)->paginate(10)->toArray();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值