在laravel php中注册新用户时更新多个用户详细信息

在laravel php中注册新用户时更新多个用户详细信息,php,mysql,laravel,Php,Mysql,Laravel,下面是在php laravel-5.4 mysql中注册新用户代码 当一个新用户注册时,他在注册表格中输入参考代码。 我希望当一个新用户在手机上注册时->'123'和参考号'987',然后 步骤1)找到新注册用户的“参考号”,然后在所有注册用户的“移动”字段中搜索“参考号”,然后在其收入中添加50%的$200(货币),在数据库字段name=“user\u under”中添加以前的用户名 步骤2)找到以前用户的“参考号”,然后在所有注册用户的“移动”字段中搜索“参考号”,然后在其收入中添加30%

下面是在php laravel-5.4 mysql中注册新用户代码

当一个新用户注册时,他在注册表格中输入参考代码。 我希望当一个新用户在手机上注册时->'123'和参考号'987',然后 步骤1)找到新注册用户的“参考号”,然后在所有注册用户的“移动”字段中搜索“参考号”,然后在其收入中添加50%的$200(货币),在数据库字段name=“user\u under”中添加以前的用户名

步骤2)找到以前用户的“参考号”,然后在所有注册用户的“移动”字段中搜索“参考号”,然后在其收入中添加30%的$200(货币),在数据库字段name=“user\u under”中添加以前用户的姓名

步骤3)找到以前用户的“参考号”,然后在所有注册用户的“移动”字段中搜索“参考号”,然后在其收入中添加$200(货币)的10%,并在数据库字段name=“user\u under”中添加以前用户的姓名

步骤4)找到以前用户的“参考号”,然后在所有注册用户的“移动”字段中搜索“参考号”,然后在数据库字段name=“user\u under”中添加以前用户的姓名

******第4步继续,直到参考号=空/无值

我不明白如何运用这个逻辑

#####编辑 @杰弗里

下面是第五级的手动代码,需要在递归时使用它来实现自动化

 public function store(Request $request)
{

    $post = new Admin();
        $post->name = 'nill';
        $post->email = $request->email;
        $post->plan = 'uuiuii';
        $post->epin = '9999';
        $post->ref = $request->ref;
        $post->mobile = $request->mobile;
        $post->password = bcrypt($request->password);
        $post->save();


    $referal_user = $request->ref;
    $referal_email = DB::table('admins')->where('mobile', $referal_user)->first();
    $referal_id = $referal_email->id;
    $right_count = $referal_email->no_user_right;
    $list_all_right_user = $referal_email->user_listing_right;

    //first update


        $update_ref_user = Admin::find($referal_id);
    $get_user_previous = $referal_email->user_listing_right;
        $update_ref_user->user_right = $request->email;
        $update_ref_user->no_user_right = $right_count + 1;
        $update_ref_user->user_listing_right = $request->email . ' , ' . $get_user_previous;
        $update_ref_user->save();
        $last_updated_id = $update_ref_user->ref;

    ///next
    ///
   // echo $last_updated_id;

    $ref_previous2 =  $last_updated_id;
    if($ref_previous2 ) {
        $referal_email2 = DB::table('admins')->where('mobile', $last_updated_id)->first();
        $get_user_previous2 = $referal_email2->user_listing_right;
        $update_ref_user_id_2 = $referal_email2->id;
        $update_ref_user2 = Admin::find($update_ref_user_id_2);
        $update_ref_user2->user_right = 'jhkkkj';
        $update_ref_user2->no_user_right = $right_count + 1;
        $update_ref_user2->user_listing_right = $request->email . ' , ' . $get_user_previous2;
        $update_ref_user2->save();

        $ref_previous3 = $update_ref_user2->ref;
        if($ref_previous3 ) {
            $last_updated_id3 = $update_ref_user2->ref;
            $referal_email3 = DB::table('admins')->where('mobile', $last_updated_id3)->first();
            $get_user_previous3 = $referal_email3->user_listing_right;
            $update_ref_user_id_3 = $referal_email3->id;
            $update_ref_user3 = Admin::find($update_ref_user_id_3);
            $update_ref_user3->user_right = 'jhkkkj';
            $update_ref_user3->no_user_right = $right_count + 1;
            $update_ref_user3->user_listing_right = $request->email . ' , ' . $get_user_previous3;
            $update_ref_user3->save();



            $ref_previous4 = $update_ref_user3->ref;
            if($ref_previous4 ) {

                $last_updated_id4 = $update_ref_user3->ref;
                $referal_email4 = DB::table('admins')->where('mobile', $last_updated_id4)->first();
                $get_user_previous4 = $referal_email4->user_listing_right;
                $update_ref_user_id_4 = $referal_email4->id;
                $update_ref_user4 = Admin::find($update_ref_user_id_4);
                $update_ref_user4->user_right = 'jhkkkj';
                $update_ref_user4->no_user_right = $right_count + 1;
                $update_ref_user4->user_listing_right = $request->email . ' , ' . $get_user_previous4;
                $update_ref_user4->save();



                $ref_previous5 = $update_ref_user4->ref;
                if($ref_previous5 ) {
                    $last_updated_id5 = $update_ref_user4->ref;
                    $referal_email5 = DB::table('admins')->where('mobile', $last_updated_id5)->first();
                    $get_user_previous5 = $referal_email5->user_listing_right;
                    $update_ref_user_id_5 = $referal_email4->id;
                    $update_ref_user5 = Admin::find($update_ref_user_id_5);
                    $update_ref_user5->user_right = 'jhkkkj';
                    $update_ref_user5->no_user_right = $right_count + 1;
                    $update_ref_user5->user_listing_right = $request->email . ' , ' . $get_user_previous5;
                    $update_ref_user5->save();

                }
            }
        }
    }
    //next




    //4th update



    ///five
    ///
    ///





   return redirect('/admin/register2');

    }
#############这是解决办法
$referal_user = $request->ref;
    $referal_email = DB::table('admins')->where('mobile', $referal_user)->first();
    $referal_id = $referal_email->id;
    $right_count = $referal_email->no_user_right;
    $list_all_right_user = $referal_email->user_listing_right;
    $ref = $request->ref;
    $mobile = $request->mobile;
    $user_listing_left = $referal_email->user_listing_left;
    while( $refUser = Admin::where('mobile', $ref)->first() )
    {
        $refUser->user_left = $request->email;
        $refUser->user_listing_left = $refUser->user_listing_left . "," .$request->email;
        $refUser->save();

        // Update $ref to find the next guy
        $ref = $refUser->ref;

    }

我不完全理解这个问题,但我要试一试

Recursive
是这里的关键词。你似乎想爬上参考树,根据你的级别,给那个人增加一定数量的美元。但是,我不明白您在数据库字段name=“user\u under”中添加以前的用户名是什么意思,该字段也不可见

$percentages = [50, 30, 10, 5, 2, 1, 0.5];
$iteration = 0;
$ref = $request->ref;
while( $refUser = Admin::where('ref', $ref)->first() && $percentages[$iteration] )
{
    $refUser->income += floor( 200 * $percentages[$iteration++] );
    $refUser->save();

    // Update $ref to find the next guy
    $ref = $refUser->ref;
}
while循环的第二个条件是确保如果$percentages数组比数据库中的树短,它不会中断并停止给钱。当然,您可以扩展阵列


我希望这是您提出的问题,否则请留下评论。

在阅读您的问题并查看您的屏幕截图描述后,我感到困惑。@ventiseis在屏幕截图中,我刚刚解释了it数据库将如何更新。请参阅自下而上//循环获取新注册用户的参考id->查找推荐人->更新(1)//查找最后一个参考id(即1)->查找推荐人->更新(2)//查找推荐id(2)->查找推荐人->更新(3)//查找推荐id(3)->查找推荐人->更新//查找推荐id->查找推荐人->更新//无参考时,无循环结束//计数结束时停止;我不完全理解这个问题
$percentages = [50, 30, 10, 5, 2, 1, 0.5];
$iteration = 0;
$ref = $request->ref;
while( $refUser = Admin::where('ref', $ref)->first() && $percentages[$iteration] )
{
    $refUser->income += floor( 200 * $percentages[$iteration++] );
    $refUser->save();

    // Update $ref to find the next guy
    $ref = $refUser->ref;
}