This could be done with a join instead of nested query:
SELECT
u.id AS id
CASE u.role
WHEN 0 THEN \'Handlowiec\'
WHEN 1 THEN \'Kierownik\'
WHEN 2 THEN \'Administrator\'
END AS role,
u.name AS name,
u.email AS email,
COALESCE (m.name, '-') AS manager
FROM User u
LEFT OUTER JOIN User m ON u.manager = m.id ' . $where . ' ORDER BY name