// если юзер набрал нужный для уровня опыт или больше, то
if ($user->exp >= $user->exp_max) {
// добавляем ему в уровень +1
$user->lvl++;
// отнимаем от набранного опыта нужный опыт, оставляя лишнее на следующем уровне без потери опыта
$user->exp -= $user->exp_max;
// увеличиваем опыт, нужный для следующего уровня на 20% (например)
$user->exp_max *= 1.2;
}
// тут ЕСЛИ надо ещё какие-то финты с $user
// в самом конце перед вбросом $user в вид делаем сохранение
$user->save(); // в вид полетели свежие данные с новым уровнем и новым опытом