С ActiveRecord не работал, может там есть способы, как сделать изначально проверку, но можно использовать следующее:
try {
$phone = new Users();
$phone->name = '89404445566';
$phone->save();
// Если на момент "save" возникнет ошибка, то дальше код выполняться не будет и не вернёт true
return true;
} catch (Exception $exception) {
// Тут возникла какая-то ошибка при сохранении в БД
// Можете логировать или вернуть из метода значение false
// Например:
return false;
}
Что делать внутри try или catche по итогу, решать вам, но этот способ точно отловит любое исключение и не уронит весь скрипт.
P.S. Ах, вы сами писали про такой вариант. Но при "ловле" исключения никто не мешает нам продолжить работу дальше.