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

mshafnas's avatar

Laravel Query

Hi Developers, can anyone help me to optimize the below code. What I want is to get the same results with forgetting the key instead get it from the query.

$mul_users = User::join('role_users', 'role_users.user_id' , '=' , 'users.id')
                    ->join('roles', 'roles.id' , '=' , 'role_users.role_id')
                    ->where('roles.rank', '=', $mu_manager_rank)
                    ->whereIn('users.id', $dependent_arr)
                    ->where('users.is_active', '=', 1)
                    ->select('users.id', DB::raw('Concat(users.first_name," ",users.last_name) as Name'), 'users.group_by')
                        ->get();

        foreach($mul_users as $key=>$user)
        {
            $role_user = RoleUser::where('role_users.user_id', '=', $user->id)
                                ->WhereIn('role_users.role_id', $roles)->get()->toArray();
            
            if($role_user){
                $mul_users->forget($key);
            }
        }
    
        return$mul_users = $mul_users->values();
0 likes
2 replies
Tray2's avatar

What is the forget($key)?

What does the user table look like and what does the role_user look like?

Sinnbeck's avatar

Sounds like you want to filter in the query. Something like this?

$mul_users = User::join('role_users', 'role_users.user_id' , '=' , 'users.id')
                    ->join('roles', 'roles.id' , '=' , 'role_users.role_id')
              ->whereDoesntHave('roles', function ($query) use ($roles) {
           $query->whereIn('id', $roles);
}) 
                    ->where('roles.rank', '=', $mu_manager_rank)
                    ->whereIn('users.id', $dependent_arr)
                    ->where('users.is_active', '=', 1)
                    ->select('users.id', DB::raw('Concat(users.first_name," ",users.last_name) as Name'), 'users.group_by')
                        ->get();

Please or to participate in this conversation.