Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zrzucanie wyjątku w modelu z PDO
Piotrbaz
post 22.03.2013, 21:09:44
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 2
Dołączył: 15.09.2012

Ostrzeżenie: (0%)
-----


Witajcie,

Mam problem ze zrzuceniem wyjątku. W modelu mam funkcję save, oto jej ciało:

  1. public function save($task, advertisement $advert, $id = null) {
  2.  
  3. (...)
  4. if ($task == "insert") {
  5. $result = $this->db->prepare("INSERT INTO ads_advertisement
  6. VALUES('',:title, :description, :content, :miniature, :date, :type_id, :category_id)");
  7.  
  8. }
  9.  
  10. $result->bindValue(':title', $advert->getProperty('title'), PDO::PARAM_STR);
  11. //reszta wywołań bindValue (...)
  12.  
  13.  
  14. $result->execute();
  15.  
  16. }


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:
  1. try {
  2.  
  3. $this->model->save("insert", $new_advert);
  4.  
  5. }
  6. catch (Exception $e) {
  7.  
  8. $this->view->set_Exception($e->getMessage());
  9.  
  10. }


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 sciana.gif
Ale nie wychodziło nawet z Exception.

Ten post edytował Piotrbaz 23.03.2013, 09:13:41


--------------------
$piotrbaz->get_Signature();
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 07:42