Есть ли в ORM Kohana средства для регулирования реакции на ошибку добавления и обновления?

В фреймворке kohana есть orm, в классах orm есть метод save() - сохранить, который выполняет либо insert запрос, либо update запрос в базу данных в зависимости создаем мы новую запись или редактируем имеющуюся.

Для контроля в базу данных добавил ключи unique. Из за этого при вставке записей с неуникальными полями с помощью kohana orm возникает ошибка и выполнение прекращается.

Как сделать так чтобы выполнение не прекращалось, я вижу два пути которые мне не нравятся:
1. Использовать прямые SQL запросы к базе данных (не использовать orm)
2. Оборачивать каждый save() в конструкцию try { } catch

Еще можно перед каждым save() проверять на существование в базе записи с подобными полями, но это на мой взгляд чересчур ресурсоемко.

Вопрос вот в чем: Есть ли в ORM Kohana средства для регулирования реакции на ошибку добавления и обновления? Т.е. можно ли в orm прикрутить ignore?
  • Вопрос задан
  • 2996 просмотров
Решения вопроса 2
На сколько мне известно, с помощью билдера нельзя построить такой запрос. Нужно писать raw-sql
DB::query(Database::INSERT, 'INSERT IGNORE INTO table VALUES (...)')->execute();
Ответ написан
Комментировать
akubintsev
@akubintsev
Опытный backend разработчик
В принципе, вне зависимости от фреймворка это нормальная ситуация, поскольку не mysql единым живы разработчики (insert ignore - не является стандартом). Так что следует использовать try-catch
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы