Wpis z mikrobloga

Mam taką encję Seansów:
https://gist.github.com/anonymous/8e88d6acac0816b05468
i rozszerzam repozytorium w ten sposób
https://gist.github.com/anonymous/79381f0ac60c7e89bef8
Koniec końców otrzymuję wyjątek:

Key "movie" for array with keys "0, reservedTickets" does not exist in src/WowStudio/Bundle/CinemaSystemBundle/Resources/views/Default/index.html.twig at line 14

W jaki sposób zmapować dodatkową kolumnę którą wygenerowałem? Ktoś podpowie co robię źle? ;)
#symfony2 #doctrine #php
  • 10
@ghost1511: dobra najpierw moje uwagi
Dlaczego pole dot. Id nazywa się idSeance? Przecież jak jesteś w encji seance to wiadomo że pole id się tyczy tejże encji. Druga sprawa to dlaczego istnieje seter do id seance? W jakim celu.

Nie przyglądałem się twojej encji dokładnie ale w query zastanawia mnie pewna rzecz, czemu robisz join with? Doctrine automatycznie dołącza takie rzeczy więc jeśli nie masz jakichś specjalnych warunków co do joina
@NiktNieTroszczy:

Dlaczego pole dot. Id nazywa się idSeance? Przecież jak jesteś w encji seance to wiadomo że pole id się tyczy tejże encji.

Kwestia konwencji. Ja akurat lubię ten sposób. To mały projekt, nikt inny go nie będzie używał. Czytaj - zaliczenie.

Druga sprawa to dlaczego istnieje seter do id seance? W jakim celu.

To encja. Wszystkie pola encji muszą mieć gettery i settery. Czy się mylę?

Cytowany tekst...Nie przyglądałem się
@NiktNieTroszczy:

seter id jest bez sensu bo baza ci narzuca id a nie ty sam. Cieszę się że nakierowałem na rozwiązanie

O czym Ty teraz mówisz. Przecież jak doctrine czyta z bazy i tworzy obiekty to korzysta z setterów kiedy atrybut jest prywatny ;)
@ghost1511: Doctrine korzysta z refleksji, żeby ustalić wartości pól – możesz mieć same gettery i brak setterów – Doctrine sobie poradzi.

Jaka jest więc zasada? Robisz gettery/settery tylko i wyłącznie te, z których faktycznie chcesz korzystać.

Nie będziesz ustalać ID? Nie rób settera. Masz powiedzmy $firstName i $lastName, ale pobierać będziesz tylko połączoną nazwę? Zrób getFullName() i olej gettery do pojedynczych pól.

Ogólnie framework ma dawać możliwości, a nie ograniczać –
@NiktNieTroszczy: To zajrzyj do tej encji, a tam ujrzysz taką ciekawostkę, że pomiędzy seansem a rezerwacją nie ma relacji.

Nie. Potrzebuję to w kilku miejscach.


@ghost1511: No i co z tego? Aż tak duży problem napisać aaa.reservations.count? Tylko najpierw musiałbyś stworzyć relację. W przypadku bardzo złożonych widoków można skorzystać z DTO zamiast encji.