Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

sopdap's avatar

Code structure - where conditions from user table challenge

I am working on a referral system that allows users to earn a certain percentage from their direct referrals, but after being promoted to "teamLead" by admin, they can now continuously earn from their structure up to a set level. My challenge is that I want the structure function to run only when the user role is == 4, which is teamLead.

This is the code structure for ordinary users.

            if(!empty($user->referal))
            {
              $ref_bonuses = ref_set::all();
              if(env('REF_TYPE') == 'once' && count($ref_bonuses) > 0)
              {
                $ref_cnt = env('REF_LEVEL_CNT');
                $new_ref_user = $user->referal;
                $itr_cnt = 0;                

                $refExist = ref::where('user_id', $user->id)->get();
                if(count($refExist) == 0)
                {
                    while ($itr_cnt <= $ref_cnt-1)
                    {
                        $refUser = User::where('username', $new_ref_user)->get();
                        if(count($refUser) > 0)
                        {
                            $ref = new ref;
                            $ref->user_id = $user->id;
                            $ref->username = $new_ref_user;
                            $ref->wdr = 0;
                            $ref->currency = env('CURRENCY');
                            $ref->amount = $capital * $ref_bonuses[$itr_cnt]->val;
                            $ref->level = $itr_cnt+1;
                            $ref->save();
                
                            $refUser[0]->ref_bal += $capital * $ref_bonuses[$itr_cnt]->val;
                            $new_ref_user = $refUser[0]->referal;   
                            $refUser[0]->save(); 
                        }                    
                        $itr_cnt += 1; 
                        if(env('REF_SYSTEM') == 'Single_level')
                        {
                          break;
                        }
                    }
                              
                }                
                
              }

Under the users' table, I have a column for roles. goldLead=2, support=3, teamLead=4; but I want only role 4 (teamLead) to earn from their structure, which means they can earn direct and indirect refer.

 if (\DB::table('users')->where('role', 4)->exists()) {

     if( count($ref_bonuses) > 0)
              {
                $ref_cnt = env('REF_LEVEL_CNT');
                $new_ref_user = $user->referal;
                $itr_cnt = 0;    

                while ($itr_cnt <= $ref_cnt-1)
                {
                    $refUser = User::where('username', $new_ref_user)->get();
                    if(count($refUser) > 0)
                    {
                        $ref = new ref;
                        $ref->user_id = $user->id;
                        $ref->username = $new_ref_user;
                        $ref->wdr = 0;
                        $ref->currency = env('CURRENCY');
                        $ref->amount = $capital * $ref_bonuses[$itr_cnt]->val;
                        $ref->level = $itr_cnt+1;
                        $ref->save();
                    
                        $refUser[0]->ref_bal += $capital * $ref_bonuses[$itr_cnt]->val;
                        $refUser[0]->save(); 
                        $new_ref_user = $refUser[0]->referal;   
                    }                    
                    $itr_cnt += 1; 
                    if(env('REF_SYSTEM') == 'Single_level')
                    {
                        break;
                    }
                }
              }
             }

Thank you for help.

0 likes
1 reply
sopdap's avatar

Am getting error- Illuminate\Database\Eloquent\Collection {#440 ▼ #items: [] }

$refUser = User::where('username', $new_ref_user)->where('role', 4)->get();
                    dd($refUser);
                    if(count($refUser) > 0)
                    {
                        $ref = new ref;
       ```


I want to select users that has referral username and role is equal to 4 in users table.

Please or to participate in this conversation.