Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][Symfony2] doctrine annotation "nullable=true"
Foxx
post
Post #1





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Podczas zapisywania formularza otrzymuję komunikat od SQL, że wartości pól nie mogą przyjmować wartości null. Dotyczy to wszystkich pól, w których nie wpisałem żadnej wartości. Nie jest to komunikat walidacji, która przechodzi poprawnie tylko error od SQL. Definicje wyglądają tak:

  1. /**
  2.  * @ORM\Column(type="string", length=255)
  3.  */
  4. protected $firstName;


Błąd znika po dodaniu parametru nullable=true i przegenerowaniu encji:

  1. /**
  2.  * @ORM\Column(type="string", length=255, nullable=true)
  3.  */
  4. protected $firstName;


No i teoretycznie wszystko fajnie, ale nie rozumiem trochę tego, że mimo braku walidacji pola nie mogą przyjmować wartości null jeżeli explicite nie dodam im parametru nullable. Czy tak po prostu jest, czy może ja czegoś nie uwzględniam? A jeżeli wszystko jest ok to dlaczego nie ma o tym nic w dokumentacji?

Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Domyślnie obiekt Doctrine\ORM\Mapping\Column ma właściwość nullable ustawioną na FALSE: https://github.com/doctrine/doctrine2/blob/.../Column.php#L65 Stąd też wygenerowana kolumna posiada atrybut NOT NULL. Próbując wrzucić tam później NULLa oczywistym jest, że baza danych wyrzuci błąd.
2. Ja tutaj nie widzę żadnej walidacji, ani adnotacji dot. reguł walidacji, więc ciężko jest się tutaj na ten temat wypowiadać - pokaż jakiś kod.
3. Mechanizm walidacji i baza danych nie mają ze sobą kompletnie nic wspólnego.
Go to the top of the page
+Quote Post
Foxx
post
Post #3





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Ok, punkt 1. wyjaśnił mi, że domyślnie nullable=false - czyli rozumiem, że przy każdej kolumnie trzeba pisać nullable=true i generalnie sprawa załatwiona.

Co do punktu 2. to właśnie tak wygląda mój kod, nie ma tu walidacji i o to właśnie chodziło - chciałem jasno pokazać, że to nie jakaś moja walidacja mnie zatrzymuje.
Dzięki za odpowiedź.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
czyli rozumiem, że przy każdej kolumnie trzeba pisać nullable=true i generalnie sprawa załatwiona.
Jeżeli występowanie NULLi w danej kolumnie bazy danych jest dla Ciebie OK, to chyba tak.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 12:52