Задать вопрос

Phalcon phql обработка duplicate key

Всем привет.

Такой вопрос, не смог найти ответ в документации и на форума сообщества.
Есть достаточно простая таблица (MySQL). В ней поле title с UNIQUE индексом. Соответственно, в контроллере делается что-то подобное:
$Pages = new Pages();
                   

                    $Pages->title = !empty ($streamPage['title']) ? $streamPage['title'] : 'Untitled';
                    $Pages->active = 1;


                    if ($Pages->save() == false){
                        foreach ($Pages->getMessages() as $errorMessage){
                            error_log ($errorMessage);
                        }
                        continue;
                    }


Однако если мы выполним этот же запрос 2 раза, мы получим логичную ошибку:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '...' for key 'title'

Можно как-то поймать duplicate entry и сделать update? Т.е через ORM воссоздать запрос
INSERT ... ON DUPLICATE KEY UPDATE ...
  • Вопрос задан
  • 3725 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
kompi
@kompi
nullstack devoops
Решение навскидку. В модели в beforeSave делать поиск на существующий title. Соответственно, если найдено - update, иначе - create.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
taliban
@taliban
php программист
А try и catch не ловит эту ошибку?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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