![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam klasę KategorieEntity i ZdjeciaEntity. W widoku w pętli wyświetlam wszystkie kategorie, jednak chciałbym wywołać moją metodę pobierzNazweMiniaturyKategorii() z KategorieEntity na obiekcie reprezentującym pojedynczą kategorię, tzn. w widoku mam:
W klasie KategorieEntity:
Niestety wykonanie zapytania w klasie Entity i wywołanie metody z tej klasy w widoku chyba nie jest mozliwe, bo to nie działa (nie jest też wyświetlany komunikat błedu), więc jak to zrobić? Ten post edytował wiewiorek 21.03.2012, 14:23:21 |
|
|
![]()
Post
#2
|
|
Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Z repozytorium też już próbowałem, tzn. przeniosłem tę metodę do klasy:
i wciąż wywołanie jej w widoku nie działa. |
|
|
![]()
Post
#4
|
|
Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Logi co mówią?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
No nic istotnego własnie nie mówią:
[2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\RouterListener::onEarlyKernelRequest". [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". [] [] [2012-03-21 14:53:44] security.DEBUG: Read SecurityContext from the session [] [] [2012-03-21 14:53:44] security.DEBUG: Reloading user from user provider. [] [] [2012-03-21 14:53:44] doctrine.DEBUG: SET NAMES UTF8 ([]) [] [] [2012-03-21 14:53:44] doctrine.DEBUG: SELECT t0.user_id AS user_id1, t0.username AS username2, t0.email AS email3, t0.password AS password4, t0.salt AS salt5 FROM user t0 WHERE t0.user_id = ? ([1]) [] [] [2012-03-21 14:53:44] security.DEBUG: Username "admin" was reloaded from user provider. [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\RouterListener::onKernelRequest". [] [] [2012-03-21 14:53:44] request.INFO: Matched route "kategorie_zarzadzanie" (parameters: "_controller": "Acme\StronaBundle\Controller\KategorieController::indexAction", "_route": "kategorie_zarzadzanie") [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector::onKernelController". [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.controller" to listener "Acme\DemoBundle\ControllerListener::onKernelController". [] [] [2012-03-21 14:53:44] event.DEBUG: Notified event "kernel.controller" to listener "JMS\SecurityExtraBundle\Controller\ControllerListener::onCoreController". [] [] [2012-03-21 14:53:44] doctrine.DEBUG: SELECT k0_.id AS id0, k0_.nazwa AS nazwa1, k0_.opis AS opis2, k0_.data_dodania AS data_dodania3, k0_.data_modyfikacji AS data_modyfikacji4 FROM kategorie k0_ ORDER BY k0_.data_dodania DESC ([]) [] [] |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Niby nic istotnego nie mówią, ale jednak brakuje w nich Twojego zapytania. Zastanów się czemu jego tam nie ma.
Wykonywanie zapytań z poziomu encji moim zdaniem jest nie poprawne. Powinieneś albo to zrobić tak jak wspomniał pedro84, albo w kategorii przejść po wszystkich zdjęciach i wybrać odpowiednie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem w końcu w ten sposób, że w akcji kontrolera wywołuję tę metodę z repozytorium i zapisuje dane do tablicy, a potem przekazuję ją do widoku i z niej korzystam:
A w widoku:
To jest chyba jednak najlepsze rozwiązanie, wadą rozwiązania jest to że zarówno w akcji kontrolera jak i w widoku mam tę samą praktycznie pętle, ale co tam. (IMG:style_emoticons/default/smile.gif) Ten post edytował wiewiorek 21.03.2012, 17:11:28 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Cytat To jest chyba jednak najlepsze rozwiązanie To jest akurat jedno z najgorszych rozwiązań: zapytanie w kontrolerze w dodatku w pętli i do tego jeszcze polskie nazewnictwo wymieszane z angielskim. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
To jest akurat jedno z najgorszych rozwiązań: zapytanie w kontrolerze w dodatku w pętli i do tego jeszcze polskie nazewnictwo wymieszane z angielskim. Akurat jedyne działające, podobnie jak to - update z joinem w DQL, nie mam dostępu do id_kategorii w ZdjeciaEntity więc żeby zrobić update muszę użyć joina, ale co fajniejsze to zapytanie nie działa (nikt na google groups doctrine nie wiedział i na forum symfony również co jest nie tak):
Rozwiązałem więc to tak - zrobić najpierw selecta, a potem update:
Ah jakie to Symfony 2 jest cudowne, tyle rzeczy trzeba robić naookoło. (IMG:style_emoticons/default/tongue.gif) A co do mieszania polskiego z angielskim, zawsze tak robię jak uczę się nowych technologii, robię to od momentu jak kiedyś uczyłem się WinAPI - wówczas pisałem wszystko po angielsku, a jak wróciłem do kodu po miesiącu to nie wiedziałem już co jest mego autorstwa a co było częścią WinAPI. Może to i głupie oraz nieeleganckie, ale potem przynajmniej wiem i nie muszę szukać czy daną metodę napisałem ja czy jest częścią danej technologii. Takie postępowanie wielokrotnie zaoszczędziło mi sporo czasu. Gdy tylko dochodzę do wniosku, że znam już w miarę dobrze daną technologię to przestawiam się na angielski. Ten post edytował wiewiorek 22.03.2012, 07:03:34 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 5 Dołączył: 30.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zapytania powinno pisać się w klasach Repository. Jeżeli mamy własne xxxRepository trzeba je dodac w klasie encji w sekcji "use". Komunikację z EntityManagerem oraz złożone operacje najlepiej robić w serwisach i z nich przekazywać gotowe wyniki do kontrolerów. W kontrolerach zaś tylko wołać widoki / robić forwardy lub redirecty, ewentualne odpalać jakieś inne akcje, najlepiej niedotyczące modelu; tu może być problem bo często jednak w kontrolerach operujemy na formularzach i robimy persist/flush co nie do końca jest okey.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 05:01 |