【PHP】查询用户的直推、非直推、二级、三级、团队人数示例

目录

1.构建公共函数,命名为team

2.使用方法,以yii2为例


首先在你的user表需要有一个字段串联推荐关系,如:

  • 我的id是666
  • 上级关系字段是superior
  • 字段值是:333_222_111 或 333,222,111

1.构建公共函数,命名为team


php 复制代码
<?php
/**
 * @author zzoood
 */
namespace common\querys;
class UserQuery extends BaseQuery
{
    public function team($uid, $level = 1, $column = 'superior') {
        if ($level == 1) {//直推
            $this->andWhere("$column REGEXP '^{$uid}_'");
        } elseif ($level == 2) {//非直推
            $this->andWhere("$column REGEXP '_{$uid}_'");
        } elseif ($level == 3) {//团队(直推 + 非直推)
            $this->andWhere("$column REGEXP '^{$uid}_|_{$uid}_'");
        } elseif ($level == 12) {//二级
            $this->andWhere("$column REGEXP '^[0-9]+_{$uid}_'");
        } elseif ($level == 13) {//三级
            $this->andWhere("$column REGEXP '^[0-9]+_[0-9]+_{$uid}_'");
        }
        return $this;
    }
}

参数说明:

  • $uid:用户ID,用于匹配团队关系中的上级或下级。

  • $level:整数型参数,默认为1,表示要查找的团队层级。不同的值对应不同的层级关系:

    • 1:直推,即直接推荐的下级,其superior字段以 $uid 开头并跟随下划线。
    • 2:非直推,即不是直接推荐但存在间接推荐关系,其superior字段中包含 $uid 并且 $uid 前后均有其他数字和下划线。
    • 3:团队,包括直推及所有间接推荐的下级,其superior字段以 $uid 开头或在任意两个数字之间包含 $uid
    • 12:二级,表示与 $uid 直接间隔一级的下级,其superior字段以至少一个数字开头,然后是 $uid,之后再跟一个下划线。
    • 13:三级,表示与 $uid 直接间隔两级的下级,其superior字段以至少两个数字开头,每个数字间用下划线分隔,最后是 $uid
  • $column:字符串类型,默认为 'superior',表示用于存储上下级关系的字段名。

在函数内部,根据传入的 $level 参数使用正则表达式来设置查询条件,并将其添加到当前查询对象中。最后返回当前查询对象以便进行链式调用,进一步完成查询过程。

2.使用方法,以yii2为例


php 复制代码
$teamMembers = User::find()->team(111, 2)->all();

这条语句会查询出与用户ID为111有间接推荐关系(非直推)的所有团队成员记录。

相关推荐
啊阿狸不会拉杆4 小时前
《计算机网络-自顶向下方法》3.6 拥塞控制原理 读书笔记
计算机网络·智能路由器·php
郑州光合科技余经理6 小时前
本地生活服务系统:成品模块和定制接口怎么划界
java·前端·人工智能·后端·系统架构·php·ai编程
LorryJovens12 小时前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php
Casual14 小时前
【网络基础进阶】:看懂子网划分与 VLAN
开发语言·网络·php
0xBADCODE16 小时前
CTF Writeup 合集
安全·web安全·网络安全·系统安全·密码学·php·ctf
IPdodo_19 小时前
静态 IP 访问异常排查:403/429 归因与迁移验收
服务器·网络·数据库·python·网络协议·php·性能测试
砚凝霜20 小时前
【软考信息安全】第二章 网络攻击基础与常见技术方法
网络·安全·php
XR12345678821 小时前
办公组网像“看病“:先问诊,再选型
开发语言·php
JaguarJack1 天前
现在就值得尝试的 5 个 Laravel 新包
后端·php·laravel·服务端
BingoGo1 天前
现在就值得尝试的 5 个 Laravel 新包
后端·php