alexMafus's avatar

Question about search in eloquent

Hi i want to add in my search implementation the ability to select a checkbox and then to show only the unique players by name and surname so for example if i have a user with name John Doe twice to show me only one here is my code.

Player Model

 public function scopeSearchPlayers($query, $search_id, $search_name, $search_status, $pagination) {
       
        return $query->latest()->when($search_id, function ($query) use ($search_id) { 
            return $query->where('registrationId',  '=',  $search_id);     
        
        })->when($search_name, function ($query) use ($search_name) {
                return $query->where('first_name', 'LIKE', '%'.$search_name.'%');
       
        })->when($search_status, function ($query) use ($search_status) {
            return $query->where('statusOne', $search_status);  
        })->when($pagination, function ($query) use ($pagination) {
            return $query->paginate($pagination);   
        });
    }

Player Controller

      public function index(Request $request) { 
        $search_id = $request->get('id');
        $search_name = $request->get('name');
        $search_status =  $request->get('status');
        $pagination =  $request->get('pagination');  
        
        if ($search_id || $search_name ||  $search_status ||  $pagination) {
          $players = Player::searchPlayers($search_id, $search_name,  $search_status,  $pagination);
        }
        else {
            $players = Player::latest()->paginate(20);
        }
 
        return view('players.index', compact(['players', 'search_id',  'search_name', 'search_status', 'pagination']));
    }

0 likes
3 replies
alexMafus's avatar

@jlrdw i want something like this i think

})->when($search_unique, function ($query) use ($search_unique) {
            return $query->distinct('first_name', 'last_name');

Please or to participate in this conversation.