如何在Laravel中实现分层树结构算法



我尝试了级别1的代码,但不知道如何实现进一步的级别并获得用户团队,我需要这方面的帮助。。。

流程:

  • 用户A将通过直接注册创建配置文件
  • 如果用户将他自己注册为直接用户,那么他是顶级用户,那么用户A将共享ref链接以加入用户,然后其他用户将作为用户B添加到用户A的团队中
  • 如果用户B与任何人共享ref链接,则该用户将作为用户C添加到用户A下
  • 通过这种方式,用户A级别将为1

我试图完成级别1,代码如下。需要帮助在所有其他级别高达20以及如何获得用户团队A,B,C…N

查看下图以了解树状结构:在此处输入图像描述

$ref_code_value = Session::get('ref_code');

if($ref_code_value) {
$ref_user = User::where('ref_code', $ref_code_value)->first();
if($ref_user) {
$direct_user = new DirectUser();
$direct_user-> user_id = $ref_user-> id;
$direct_user-> direct_user_id = $user->id;
$direct_user->save();
$ref_user_right = RefUser::whereNull('user_id_right')->latest('updated_at')->first();
$ref_user_left = RefUser::whereNull('user_id_left')->latest('updated_at')->first();
if($ref_user_right){
$ref_user_right-> user_id_right = $user->id;
$ref_user_right->save();
}else{
if($ref_user_left){
$ref_user_left-> user_id_left = $user->id;
$ref_user_left->save();
}
else{
$ref_user_right = RefUser::latest('updated_at')->first();
$ref_users = new RefUser();
$ref_users-> user_id = $ref_user_right-> user_id_right;
$ref_users->user_id_right = $user-> id;
$ref_users->save();
}
}
}
}
else{
$ref_users = new RefUser();
$ref_users-> user_id = $user->id;
$ref_users->save();
}
  1. 您需要在用户表中添加parent_id(默认值为0(

  2. 在用户模型中,您需要添加一个关系

    protected $with = ['children'];
    public function children()
    {
    return $this->hasMany(User::class, 'parent_id', 'id');
    }
    

这将返回查询中的整个树。

为了显示你需要一个递归方法

最新更新