[Symfony][doctrine]Pobranie tylko wybranych pol z joinowanej tabeli |
[Symfony][doctrine]Pobranie tylko wybranych pol z joinowanej tabeli |
4.12.2016, 21:27:42
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 448 Pomógł: 6292 Dołączył: 27.12.2004 |
Hejka,
w klasie repository mam taki kod:
ktory to pobiera dane z tabeli s oraz JOINuje tabele u. Wszystko fajnie pieknie, tylko ten kod zwraca mi wszystkie pola z tabeli u a ja bym chcial pobrac tylko dwa pola z tabeli u. Przegladam dokumentacje i wychodzi, ze za bardzo sie nie da. Probowalem nawet tak ->addSelect(['u.pole1', 'u.pole2']) ale to skolei pluje mi wyjatkiem Cytat Call to a member function getId() on array Da sie to zrobic w tym queryBuilder czy musze inaczej budowac zapytanie?
Powód edycji: [nospor]:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
4.12.2016, 21:40:04
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Dodawałeś u.ID do listy pól?
Ja w Laravel miałem to samo że jak robiłem JOIN i nie podawałem ID z jojnowanej tabeli to mi nie wczytywało relacji PS. I co to za nazwa tematu Panie Moderator. Przenoszę... A sorry nie mogę Ten post edytował Pyton_000 4.12.2016, 21:40:58 |
|
|
4.12.2016, 21:43:44
Post
#3
|
|
Grupa: Moderatorzy Postów: 36 448 Pomógł: 6292 Dołączył: 27.12.2004 |
Ale ja nie mam problemu ze mi nie pobiera. Ja mam problem ze mi pobiera wszystkie pola z tabeli U a chce pobrac tylko wybrane pola z tej tabeli
ps: tak sie skupilem na tagach ze zapomnialem o tytule -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
4.12.2016, 21:50:51
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
a
Kod $query = $this->createQueryBuilder('s')
->select(['u.id', 's.id', 'u.pole1']) ->leftJoin('s.user', 'u') ->orderBy('s.id', 'DESC') ->getQuery(); |
|
|
4.12.2016, 22:02:43
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 448 Pomógł: 6292 Dołączył: 27.12.2004 |
NIe, juz tego tez probowalem. Wszelkie proby wsadzenia tablicy w jakikolwiek SELECT powoduje rzucanie bledem
"Call to a member function getId() on array " -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.12.2016, 00:57:00
Post
#6
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) |
|
|
|
5.12.2016, 10:16:54
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 448 Pomógł: 6292 Dołączył: 27.12.2004 |
Cytat Możesz jeszcze spróbować: Tak tez probowalem wczesniej i niestety dalej to samo.Tak tez myslalem ze pozostaje mi tylko DQL. No nic, poki co to nie problem bo narazie dzialam na malych tabelach, ale pozniej dojda tabele z wiekszymi danymi i trzeba bedzie sie przestawic dla nich. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.12.2016, 10:39:18
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
Używając select() rezultatem zapytania jest tablica. Stwórz z niej obiekt(y), albo użyj partial w select
|
|
|
5.12.2016, 10:41:54
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 448 Pomógł: 6292 Dołączył: 27.12.2004 |
@Turson nic z tego co powiedziales nie zrozumialem. Co masz na mysli piszac " rezultatem zapytania jest tablica i zrob z niej obiekty" ?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.12.2016, 10:46:06
Post
#10
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
To query z posta #1 zwraca tablicę dlatego dostajesz "Call to a member function getId() on array". Możesz z takiej tablicy zrobić obiekt (zapewne encję) samemu
|
|
|
5.12.2016, 15:16:29
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 448 Pomógł: 6292 Dołączył: 27.12.2004 |
hm... Ok, to jest jakis trop. Porownam co jest zwracana gdy jest ok z tym co jest zwracane gdy nie jest ok i dam znac
edit: @Turson dzieki, miales rzecz jasna racje. Normalnie mialem obiekt entity S a w nim jego pola oraz enity U. W momencie gdy dodawalem tylko wybrane pola dla U, mialem tablice o indexach: 0 - i tu normalnie po staremu obiekt enity S id - tu id z tabeli U username - tu username z tabeli U Czyli mialem tablice z indexem 0 gdzie byl normalnie entity S oraz dodatkowe indexy na pola ktore wybralem z U. Lekko zakrecone -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.12.2016, 15:51:48
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
Zgadza się, użycie nazw kolumn zmienia sposób hydrowania bazy, znalazłem u mnie np. coś takiego:
Działa bez zarzutu. Rozumiem, że problemem jest wydajność, inaczej nikomu obiekty by nie przeszkadzały. |
|
|
5.12.2016, 16:09:36
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 448 Pomógł: 6292 Dołączył: 27.12.2004 |
Cytat Rozumiem, że problemem jest wydajność, inaczej nikomu obiekty by nie przeszkadzały. Tylko najlepsze jest to, ze w moim przypadku on nadal tworzy obiekty, tylko ukrywa je pod indexem 0 (zero) a obok tego indexu dodaje indexy z polami z innych pol. A pod indexem 0 nadal jest pelnoprawny obiekt.ps: a konkretnie tworzy obiekt S gdy podam 's'. gdy wyszczegolnie pola z s np 's.id' to juz leci w calosci tablica. Dobrze wiedziec -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.12.2016, 17:14:25
Post
#14
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) |
-------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
5.12.2016, 17:23:49
Post
#15
|
|
Grupa: Moderatorzy Postów: 36 448 Pomógł: 6292 Dołączył: 27.12.2004 |
@maly_swd, dzieki, perfect Wszakze Turson tez o tym mowil, ale ze jeszcze jestem poczatkujacy w Symfony/doctrine to za bardzo nie zrozumialem.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
5.12.2016, 17:26:42
Post
#16
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) |
Z tego co pamiętam, to uważaj jak robisz Partiala.
Jeśli odwołasz się do getera którego nie podałeś w partialu to dostaniesz NULL (mimo, że w bazie masz tam jakąś wartość). Problemy mogą być gdy zaczniesz utrwalać zmiany na takich obiektach. - Ale to sam się przekonasz. Pozdr. -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
5.12.2016, 17:36:04
Post
#17
|
|
Grupa: Moderatorzy Postów: 36 448 Pomógł: 6292 Dołączył: 27.12.2004 |
Akurat tego mam zamiar uzywac tylko i wylacznie przy SELECT przy generowaniu stronicowanego GRIDa wiec nie bede nic utrwalal
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 07:28 |