Mam problem ze zrzuceniem wyjątku. W modelu mam funkcję save, oto jej ciało:
public function save($task, advertisement $advert, $id = null) { (...) if ($task == "insert") { $result = $this->db->prepare("INSERT INTO ads_advertisement VALUES('',:title, :description, :content, :miniature, :date, :type_id, :category_id)"); } $result->bindValue(':title', $advert->getProperty('title'), PDO::PARAM_STR); //reszta wywołań bindValue (...) $result->execute(); }
Chcę zrzucić wyjątek, gdy podczas zapisywania wystąpi naruszenie unikalności jakiegoś pola w tabeli, np title.
No i nie wiem gdzie wrzucić throw new Exception('wiadomosc'); Próbowałem sprawdzenie, czy $result->execute() zwróci coś innego niż true, ale nie działa. Wciąż przy wyłapywaniu wyjątku dostaję wiadomość, jakbym w ogóle throw new Exception nie umieśił w Modelu.
Cytat
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'mmmmmmmmmmm' for key 'title'
Kod w kontrolerze:
try { $this->model->save("insert", $new_advert); } catch (Exception $e) { $this->view->set_Exception($e->getMessage()); }
W widoku, wiadomo, wyświetlam komunikat wyjątku.
edit:
Teraz już nie wiem, czy w ogóle mogę własny komunikat wysłać, w manualu znalazłem, że nie powinno się jawnie zrzucać wyjątków klasy PDOException

Ale nie wychodziło nawet z Exception.