You can easily use paginate() with joining tables. Noting wrong with that.
Try this in your controller-
$user = CareerSolution::where ( 'subject', 'LIKE', '%' . $q . '%' )
->where('career_solutions.topic_category_id', '=', $c)
->join('role_users' , 'role_users.user_id', '=', 'career_solutions.user_id')
->join('roles' , 'roles.id', '=', 'role_users.role_id')
->join('users', 'users.id', '=', 'career_solutions.user_id')
->join('categories', 'categories.id', '=', 'career_solutions.topic_category_id')
->orWhere ( 'career_solutions.user_id', 'LIKE', '%' . $q . '%' )
->orWhere ( 'career_solutions.id', '=', 'events.subject')
->orWhere('career_solutions.topic_category_id' ,'=', $category->id)
->orWhere ( 'career_solutions.user_id', '=', 'users.username')
->select('career_solutions.id as id','subject','users.id as user_id','username', 'profile_picture', 'role_id', 'optional', 'topic_category_id','categories.category')
->paginate(6);
To render the pagination link, you need to use following codes in the view-
{{ $user->links }}
Understand more flow of pagination here: https://laravel.com/docs/6.x/pagination