Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony2] doctrine annotation "nullable=true"
Forum PHP.pl > Forum > PHP > Frameworki
Foxx
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?

Crozin
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.
Foxx
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ź.
Crozin
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.