首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel中实现分层树结构算法?

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

Stack Overflow用户
提问于 2020-09-03 13:09:51
回答 1查看 157关注 0票数 0

我尝试了第1级代码,但不知道如何实现更高的级别和如何获得用户团队,我需要帮助在这个.

进程:

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

我试图完成第1级,代码如下所示。需要所有其他级别的帮助,直到20,以及如何得到用户A,B,C的团队.N

检查下面的图像以了解树结构:在这里输入图像描述

代码语言:javascript
复制
            $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();
            }
EN

回答 1

Stack Overflow用户

发布于 2020-09-03 13:27:13

  1. 您需要在User表中添加parent_id (default=0)
  2. 在用户模型中,需要添加一个关系。 受保护的$with =‘子“;公共函数子(){返回$this->hasMany(用户::class,'parent_id','id');}

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63724361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档