TP3.2框架中如何使用多个mysql函数 如FIND_IN_SET 和 !FIND_IN_SET

2 篇文章 0 订阅

数据查询中可能会用到数据表中的多个字段去做匹配 可能会用到多个FIND_IN_SET  也可能需要拼接多个条件

$all_department = getOneAdminAllDepartment($user_id); //获取需要匹配的值
if ($all_department){
   foreach ($all_department as $val){
     $str_where[] = " FIND_IN_SET($val,case_show_partment) ";    //多个值只要满足一个都要返回数据  如只要case_show_partment列中包含 1或2或3的都满足
   }
}
$str_where[] = " FIND_IN_SET($user_id,case_show_admin) ";//当userID满足这个列中的数据时也返回数据
$where['_string'] = implode(" OR ",$str_where); //切割拼接条件
预览sql效果:
WHERE
FIND_IN_SET('all', case_show_partment)
OR FIND_IN_SET('all', case_show_admin)
OR FIND_IN_SET(4444, case_show_partment)
OR FIND_IN_SET(5555, case_show_admin)

但是如果我们想除了这个函数还有其他函数要使用的时候并且$where['_string']已经被使用的时候怎么拼接?

$where['_logic'] = 'AND';//and 或者 OR 就是看你的需要 
$map['_string'] = " !FIND_IN_SET($user_id,case_join_admins) "; //这里的函数你也可以换成其他的你也可以继续拼接sql
$where['_complex'] = $map;
预览sql效果:
WHERE
    FIND_IN_SET('all', case_show_partment)
    OR FIND_IN_SET('all', case_show_admin)
    OR FIND_IN_SET(4, case_show_partment)
    OR FIND_IN_SET(55, case_show_admin)
AND (
    (
        !FIND_IN_SET(55, case_join_admins) //就是与FIND_IN_SET相反的意思  
    )
)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值