Используя Doctrine, я пытаюсь проверить, успешно ли работает flush().
до моих дней ORM я делал if ( $query->execute() ) {}
Поскольку flush() возвращает void, я не уверен, что использование try catch решит такую проблему, как предложено здесь? Было бы это?
Если нет, есть ли способ добиться чего-то подобного?






если вы хотите узнать, была ли очищена сущность, вы можете использовать прослушиватель событий доктрины (https://symfony.com/doc/3.0/doctrine/event_listeners_subscribers.html)
поможет вам выполнить действие автоматически после сохраняющегося события
Хотя страница, на которую вы ссылаетесь, дает ответ сегодня, вы должны включить в свой ответ код, который дает ответ. Эта ссылка может однажды умереть, пока жив ваш ответ, создавая бессмысленную ситуацию.
Под капотом PDO выдаст исключение, если выполнение запроса не удастся. Доктрина не заставит замолчать это исключение (оно перенесет его в оболочку, а выбросит повторно). Поэтому просто убедиться, что исключение не возникло, достаточно, чтобы проверить, все ли было выполнено успешно.
даже с движком mysql?
Да, это функция PDO (см. php.net/manual/en/pdo.error-handling.php), которая включена для вас под капотом Doctrine DBAL.
Пока вы используете PDO, не имеет значения, какой движок вы используете.
Принятый ответ правильный, но тогда возникает вопрос, что делать с перехваченным исключением. Подобно затруднительному положению, с которым сталкивается собака, когда она на самом деле ловит грузовик, за которым гонится. Обычно у вас очень ограниченные возможности восстановления. Диспетчер сущностей больше не используется (хотя вы можете создать новый). Вы зарылись где-то глубоко в своем коде, и его бывает сложно раскопать. В большинстве случаев вы можете просто позволить глобальному обработчику исключений фреймворка позаботиться об этих проблемах.