Добрый вечер.
Уберите первое сохранение в базу
$phone ->save();
P.S.
Хочу добится что бы если пользователь по ошибке или специально ввёл одинаковые данные приложение не упало, а корректно сказало ему "извините такая запись уже есть" и всё.
Для этого, в yii2, существует валидация.
В данном случае Вам подойдёт
вот этот встроенный валидатор, который будет проверять передаваемые пользователем данные на уникальность. При попытке передать одинаковые данные он выдаст предупреждение.
Вот так, например, можно проверять адрес e-mail на уникальность
// в модели, в правилах валидации пишите
['email', 'unique', 'targetClass' => self::className(),
'message' => 'Извините, такой e-mail уже существует в базе данных',
Так можно проверять и логины и телефоны и всё что пожелаете...