Можно ли получить параметры DBALException в Symfony 4? - PullRequest
0 голосов
/ 21 января 2019

У меня есть ограничение на одну из моих таблиц, я хотел бы получить один из параметров, когда выбрасывается исключение Doctrine\DBAL\Exception\UniqueConstraintViolationException для настройки сообщения об ошибке.

 * @ORM\Table(name="tile",
 *    uniqueConstraints={
 *        @UniqueConstraint(name="unique_image_tileset",
 *            columns={"tileset_id", "image"})
 *    })

В моем контроллере яесть:

try {
    $em = $this->getDoctrine()->getManager();
    /** some logic **/
    foreach ($files as $file) {
        try {
            /* @var $file \Symfony\Component\HttpFoundation\File\UploadedFile */
            $tile = new Tile();
            $tile->setImageFile($file);
            $tileset->addTile($tile);
            $tiles[] = $tile;
        } catch (\Exception $ex) {
            $errors['warning'][] = $ex->getMessage();
        }
    }
    /** some more logic **/
    $em->persist($tileset);
    $em->flush();
    /** some more logic **/
} catch (UniqueConstraintViolationException $ex) {
    $errors['warning'][] = $this->_translator->trans('The image name %imagename% is already used for this tileset',array(),'exceptions');
} catch (\Exception $ex) {
    $errors['warning'][] = $ex->getMessage();
}

Существует функция formatParameters на Doctrine\DBAL\DBALException, но она является закрытой.Есть ли другой способ?

1 Ответ

0 голосов
/ 21 января 2019

В данном конкретном случае похоже, что это невозможно даже с помощью getPrevious. Я закончил проверку перед добавлением плитки в tileset.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...