Вы допустили ошибку в этой строке:
$q->where("professions.name", "like", "%".$query."%");
Вам необходимо объединить переменную. Вы получаете эту ошибку, потому что with()
принимает ассоциативный массив для ограничения активных нагрузок. Попробуйте:
$professions = Profession::whereHas("users", function($q) use($query) {
$q->where("professions.name", "like", "%".$query."%");
})->withCount('users')->with(['users' => function($q) {
$q->take(5);
}])->paginate(10);