[PHP]Dlaczego to samo co w kontrolerze nie wychodzi w listenerze? :) |
[PHP]Dlaczego to samo co w kontrolerze nie wychodzi w listenerze? :) |
18.10.2016, 01:01:00
Post
#1
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 15.09.2016 Skąd: Warszawa Ostrzeżenie: (0%) |
Próbowałem zadać uniwersalne pytanie, ale było bardziej nieczytelne. Może komuś mimo to zechce się rzucić okiem, uprościłem ile się dało.
Dlaczego listener nie wysyła poprawnie produktów w linii $event->getZamowienie()->getZamowienieProdukty() a chwilę później kontroler robi to poprawnie w linii $produkty = $zamowienie->getZamowienieProdukty() W debugerze w obu przypadkach $produkty są typu doctrine/orm/persistentcollection i wyglądają identycznie (ale w obu przypadkach nie widać jakie dane przechowują)
Czy to chodzi o to, że bez przeładowania strony nie mogę wywołać powiązanej z Entity/Zamowienie (ManyToOne) kolekcji (Doctrine\Common\Collections\Collection) którą zwraca ->getZamowienieProdukty(), gdy ten obiekt (new Zamowienie) dopiero co utworzyłem i dopiero co zapisałem go flush() do bazy danych? (wiem, że to zdanie wygląda jakby było pisane przed dałna, staram się jak mogę, zasób słów jest jaki jest) Ten post edytował porzeczki 18.10.2016, 01:24:55 |
|
|
18.10.2016, 02:12:22
Post
#2
|
|
Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) |
Tak się dzieje, jak do produktu przypisujesz zamówienie, ale zamówienie nie wie o tym, że coś zostało do niego "przypisane".
W tym wypadku robiąc coś takiego:
w rzeczywistości powinieneś zrobić coś takiego:
Pytanie: Dlaczego? Odpowiedź: Bo doctrine nie wie o zmianach które "stały się" w Twoim zamówieniu, co innego gdybyś pobrał to jako nowy wpis z bazy - czyli to, co robisz w kontrolerze. -------------------- Cytat There is a Bundle for that Lukas Kahwe Smith - October 31th, 2014 |
|
|
18.10.2016, 11:31:47
Post
#3
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 15.09.2016 Skąd: Warszawa Ostrzeżenie: (0%) |
dziękuję, działa. (z twojego kodu pominąłem warunek in_array bo $this->zamowienieProdukty jest obiektem)
co innego gdybyś pobrał to jako nowy wpis z bazy - czyli to, co robisz w kontrolerze. no właśnie, próbowałem robić:
i też zamówienie nie wiedziało o produktach. Ten post edytował porzeczki 18.10.2016, 12:19:40 |
|
|
18.10.2016, 12:15:04
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
ZamowienieManager
tworzZamowienie tworzProduktyZamowienia addFlashBag setIdklient setDatazlozeniacurrent itp. karygodne nazewnictwo Ten post edytował Turson 18.10.2016, 12:15:20 |
|
|
18.10.2016, 12:48:37
Post
#5
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 15.09.2016 Skąd: Warszawa Ostrzeżenie: (0%) |
no wiem. Zacząłem tak nazywać, więc później już poleciała lawina tych potworków. Najpierw chciałem by było zrozumiałe dla mnie (bo nikt inny miał tego nie oglądać), ale szybko okazało się że to jest niezrozumiałe też dla mnie.
Ten post edytował porzeczki 18.10.2016, 13:02:05 |
|
|
18.10.2016, 13:18:44
Post
#6
|
|
Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) |
$em->refresh($zamowienie);
-------------------- Cytat There is a Bundle for that Lukas Kahwe Smith - October 31th, 2014 |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 12:30 |