数据查询中可能会用到数据表中的多个字段去做匹配 可能会用到多个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相反的意思
)
)