【PHP】查询用户的直推、非直推、二级、三级、团队人数示例
2024-01-10 12:54:46
目录
首先在你的user表需要有一个字段串联推荐关系,如:
- 我的id是666
- 上级关系字段是superior
- 字段值是:333_222_111?或?333,222,111
1.构建公共函数,命名为team
<?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为例
$teamMembers = User::find()->team(111, 2)->all();
这条语句会查询出与用户ID为111有间接推荐关系(非直推)的所有团队成员记录。
文章来源:https://blog.csdn.net/q8688/article/details/135498996
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!