Рассматривали ли вы возможность самому PDO генерировать исключения вместо ошибок?
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Теперь вы можете исключить проверку ошибок PDO, которые могут значительно уменьшить код. Вы можете добавить блок try / catch, чтобы перехватывать исключения, которые можно восстановить, например, при нарушении ограничений.
В остальном просто используйте Try / Catch где-то высоко в вашем внешнем контроллере, чтобы поймать действительно исключительные исключения.
Единственное отличие в моем подходе в том, что в BlogModel вы просто:
$stmt->execute();
Никаких проверок или чего-либо еще. Просто позвольте PDO выдать исключение, если вставка не удалась. Тогда вы будете использовать команду try / catch в вашем контроллере , как показано на примере ladar
Или в моем случае, если бы я был почти уверен, что вставка никогда не потерпит неудачу, я просто использовал бы общий блок try / catch в моем фронт-контроллере и не тратил бы время на обработку каждого возможного исключения вручную.