在Laravel中,如果用户有任何赞助商用户,则希望通过循环分发佣金

在Laravel中,如果用户有任何赞助商用户,则希望通过循环分发佣金,laravel,Laravel,我正在创建级别计划传销,将佣金分配给赞助用户,最高可达5/10级别 这是我的代码,我可以做我想做的事情,但我相信这会有更简单更干净的方法来做这件事,这是10级的硬核。 我想创造动态的地方。我可以更改级别a,并且该计算适用于该特定级别 请帮我提前谢谢 这是我的控制器 $sponser= DB::table('customers')->where('customers_id', '=', $request->customers_id)->value('sponsor_id

我正在创建级别计划传销,将佣金分配给赞助用户,最高可达5/10级别 这是我的代码,我可以做我想做的事情,但我相信这会有更简单更干净的方法来做这件事,这是10级的硬核。 我想创造动态的地方。我可以更改级别a,并且该计算适用于该特定级别

请帮我提前谢谢

这是我的控制器

    $sponser= DB::table('customers')->where('customers_id', '=',  $request->customers_id)->value('sponsor_id');
    // $isMember = ;

    if (!empty($sponser)) {
        $percentage = 4;
        $price = $products_data->final_price;
        $comm = ($price * $percentage )/ 100;
        DB::table('ref_commissions')->insert([
                'user_id' => $sponser,
                'order_id' => $orders_id,
                'percent' => $percentage,
                'commission' => $comm,
        ]);

        $sponser2= DB::table('customers')->where('user_id', '=',  $sponser)->value('sponsor_id');   
        if (!empty($sponser2)) {
            DB::table('ref_commissions')->insert([
                      'user_id' => $sponser2,
                      'order_id' => $orders_id,
                      'percent' => $percentage,
                      'commission' => $comm,
            ]);
            $sponser3= DB::table('customers')->where('user_id', '=',  $sponser2)->value('sponsor_id');  
            if (!empty($sponser3)) {
                DB::table('ref_commissions')->insert([
                          'user_id' => $sponser3,
                          'order_id' => $orders_id,
                          'percent' => $percentage,
                          'commission' => $comm,
                ]);
                    $sponser4= DB::table('customers')->where('user_id', '=',  $sponser3)->value('sponsor_id');  
                    if (!empty($sponser4)) {
                        DB::table('ref_commissions')->insert([
                                  'user_id' => $sponser4,
                                  'order_id' => $orders_id,
                                  'percent' => $percentage,
                                  'commission' => $comm,
                        ]);
                            $sponser5= DB::table('customers')->where('user_id', '=',  $sponser4)->value('sponsor_id');  
                            if (!empty($sponser5)) {
                                DB::table('ref_commissions')->insert([
                                          'user_id' => $sponser5,
                                          'order_id' => $orders_id,
                                          'percent' => $percentage,
                                          'commission' => $comm,
                                ]);
                                $sponser6= DB::table('customers')->where('user_id', '=',  $sponser5)->value('sponsor_id');  
                                if (!empty($sponser5)) {
                                    DB::table('ref_commissions')->insert([
                                              'user_id' => $sponser6,
                                              'order_id' => $orders_id,
                                              'percent' => $percentage,
                                              'commission' => $comm,
                                    ]);
                                    $sponser7= DB::table('customers')->where('user_id', '=',  $sponser6)->value('sponsor_id');  
                                    if (!empty($sponser5)) {
                                        DB::table('ref_commissions')->insert([
                                                  'user_id' => $sponser7,
                                                  'order_id' => $orders_id,
                                                  'percent' => $percentage,
                                                  'commission' => $comm,
                                        ]);
                                        $sponser8= DB::table('customers')->where('user_id', '=',  $sponser7)->value('sponsor_id');  
                                        if (!empty($sponser5)) {
                                            DB::table('ref_commissions')->insert([
                                                      'user_id' => $sponser8,
                                                      'order_id' => $orders_id,
                                                      'percent' => $percentage,
                                                      'commission' => $comm,
                                            ]);
                                            $sponser9= DB::table('customers')->where('user_id', '=',  $sponser8)->value('sponsor_id');  
                                            if (!empty($sponser5)) {
                                                DB::table('ref_commissions')->insert([
                                                          'user_id' => $sponser9,
                                                          'order_id' => $orders_id,
                                                          'percent' => $percentage,
                                                          'commission' => $comm,
                                                ]);
                                           }
                                           //10 Level
                                       }
                                       //9 Level
                                   }
                                   //8 level
                               }
                               //7 level
                           }
                           //6 level
                       }
                       // 5 level
                   }
                   //4 level

              }
              //3 level

          }
          //2 level

     }
     // 1 level

我认为可能存在另一种重构该方法的方法,但这里有一种减少代码行的方法。希望有效

// Generic insert method
public function insertRefCommissions($data) {

    DB::table('ref_commissions')->insert($data);

    $sponser= DB::table('customers')
                  ->where('user_id', '=',  $data['user_id'])
                  ->value('sponsor_id'); 

    return $sponser;
}

public function sponser() {
    $sponser= DB::table('customers')->where('customers_id', '=',  $request->customers_id)->value('sponsor_id');
    // $isMember = ;

    if (!empty($sponser)) {
        $percentage = 4;
        $price = $products_data->final_price;
        $comm = ($price * $percentage )/ 100;

        $data = [
            'user_id' => $sponser,
            'order_id' => $orders_id,
            'percent' => $percentage,
            'commission' => $comm,
        ];

        $sponser2 = $this->insertRefCommissions(array_merge($data,[ 'user_id' => $sponser ]));
        if (!empty($sponser2)) {
            $sponser3 = $this->insertRefCommissions(array_merge($data,[ 'user_id' => $sponser2 ]));
            if (!empty($sponser3)) {
                $sponser4 = $this->insertRefCommissions(array_merge($data,[ 'user_id' => $sponser3 ]));
                    if (!empty($sponser4)) {
                        $sponser5 = $this->insertRefCommissions(array_merge($data,[ 'user_id' => $sponser4 ]));
                            if (!empty($sponser5)) {
                                $sponser6 = $this->insertRefCommissions(array_merge($data,[ 'user_id' => $sponser5 ]));
                                if (!empty($sponser6)) {
                                    $sponser7 = $this->insertRefCommissions(array_merge($data,[ 'user_id' => $sponser6 ]));
                                    if (!empty($sponser7)) {
                                        $sponser8 = $this->insertRefCommissions(array_merge($data,[ 'user_id' => $sponser7 ]));
                                        if (!empty($sponser8)) {
                                            $sponser9 = $this->insertRefCommissions(array_merge($data,[ 'user_id' => $sponser8 ]));
                                            if (!empty($sponser9)) {
                                                $sponser10 = $this->insertRefCommissions(array_merge($data,[ 'user_id' => $sponser9 ]));
                                           }
                                           //10 Level
                                       }
                                       //9 Level
                                   }
                                   //8 level
                               }
                               //7 level
                           }
                           //6 level
                       }
                       // 5 level
                   }
                   //4 level

              }
              //3 level

          }
          //2 level

     }
     // 1 level
}