Возможно, не чище, чем ваш метод, но он отличается и работает.
Я создаю массив со всеми релевантными датами, сегодня, 1 марта и 1 марта следующего года, и сортирую их.
Затем я нахожу «сегодня» с array_search в массиве и получаю следующее значение.
$date = array(Carbon::parse('today'),Carbon::parse('first day of March'), Carbon::parse('first day of March + 1 year'));
sort($date);
$date = $date[array_search(Carbon::parse('today'), $date)+1];
var_dump($date);
Честно говоря, я думаю, что это медленнее, чем if (), но он не использует if () в качестве запроса OP: -)