Autor Wątek: Deklaracja opcji "default" w klasie encji  (Przeczytany 176 razy)

eerie

  • Newbie
  • *
  • Wiadomości: 27
    • Zobacz profil
Deklaracja opcji "default" w klasie encji
« dnia: Kwietnia 08, 2020, 11:55:56 »
Mam wątpliwość odnośnie tworzenia klas encji tabel bazy danych w Symfony. Czy dobrze to robię (przykład poniżej)? Chodzi mi głównie o brak deklaracji opcji "default".

https://github.com/webeeq/symfony.eeq/blob/master/src/Entity/Site.php

Michał Pipa

  • Administratorzy
  • Full Member
  • *****
  • Wiadomości: 176
    • Zobacz profil
Odp: Deklaracja opcji "default" w klasie encji
« Odpowiedź #1 dnia: Kwietnia 08, 2020, 13:28:53 »
Doctrine nie wspiera ustawiania wartości domyślnej w bazie danych: How can I add default values to a column?.

Ale możesz zawsze ustawić wartość mapowanej właściwości obiektu i zostanie ona zapisana do bazy danych (jak w przykładzie z powyższego linku). Gdy używasz Doctrine, to powinieneś myśleć raczej o obiektach, niż o bazie danych. Przykład: jeżeli obiekt powinien mieć domyślną wartość dla jakiejś właściwości, to w przypadku ustawiania tej właściwości przez wartość domyślną w bazie danych, po utworzeniu obiektu będzie miała ona wartość null aż do momentu zapisania go w bazie danych. Może to spowodować błędy w logice programu: "czemu ta właściwość ma wartość null, a nie wartość domyślną?". Powinieneś dbać o to, żeby obiekty miały zawsze poprawne wartości.

eerie

  • Newbie
  • *
  • Wiadomości: 27
    • Zobacz profil
Odp: Deklaracja opcji "default" w klasie encji
« Odpowiedź #2 dnia: Kwietnia 08, 2020, 14:00:15 »
Czy nadawanie wartości domyślnej w konstruktorze jest błędem (przykład poniżej)?

https://github.com/webeeq/symfony.eeq/blob/master/src/Entity/User.php

Michał Pipa

  • Administratorzy
  • Full Member
  • *****
  • Wiadomości: 176
    • Zobacz profil
Odp: Deklaracja opcji "default" w klasie encji
« Odpowiedź #3 dnia: Kwietnia 08, 2020, 14:27:26 »
Nie, nie jest.

W konstruktorze powinieneś ustawiać wszystkie wymagane właściwości i wtedy będziesz pewien, że nowy obiekt nie będzie miał niepoprawnego stanu. Z punktu widzenia Doctrine to nie ma żadnej różnicy jaką metodą ustawiasz właściwości. Doctrine w ogóle nie interesuje się metodami obiektu, tylko zmapowanymi właściwościami.

eerie

  • Newbie
  • *
  • Wiadomości: 27
    • Zobacz profil
Odp: Deklaracja opcji "default" w klasie encji
« Odpowiedź #4 dnia: Kwietnia 08, 2020, 14:37:52 »
Dzięki serdeczne za odpowiedź. :)