Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana]Problem z zapytaniem select distinct
Forum PHP.pl > Forum > PHP > Frameworki
45dominik
CODE
  1. $result=ORM::factory('table')
  2. ->select('column')
  3. ->distinct(TRUE)
  4. ->where('column2', '=', 'wartosc2')
  5. ->find_all();

zwraca

CODE
  1. SELECT DISTINCT `column`, `table`.* FROM `tables` AS `table` WHERE `column2` = 'wartosc2'


Co zrobić, żeby zwracało:

CODE
  1. SELECT DISTINCT `column` FROM `tables` AS `table` WHERE `column2` = 'wartosc2'


Męczę się z tym już pół dnia i nie mam żadnego pomysłu. Przekopanie internetu też nic nie dało. Mam wrażenie, że select('column') powinno niwelować `table`.* w zapytaniu MySQL, ale tak się nie dzieje. Czy ktokolwiek jest w stanie mi pomóc? Jeśli tak to z góry dzięki za pomoc smile.gif
thek
Z tego co mi wiadomo nie ma wprost możliwości określenia tego i ludzie robią "hack", używając grupowania po interesującej ich kolumnie.
phpion
Po co w tym przypadku korzystasz z ORM? Wygodniej jest wykonać zwykłe zapytanie poprzez Query Builder i zwrócić obiekty stdClass.
thek
Ja dostosowywałem się do tego, że używa ORM. A ten ma z distinct problem, który obchodzi się w opisany przeze mnie sposób. Osobiście wolę Query Builder, choć nawet on nie na wszystko pozwala w prosty sposób i nieraz sięgało się do wstrzykiwania wyrażeń lub walenia zapytania z użyciem metody query.
phpion
ORM sam w sobie jest bardzo ciekawy, ale trzeba zachować umiar i rozsądek w jego wykorzystaniu. Jeśli w tym przypadku kolega chce uzyskać unikalne wartości z 1 kolumny to po co pobierać pozostałe kolumny i grupować po tej, o którą nam chodzi? Dla mnie jest to kombinowanie na siłę (do tego niewydajne) tylko po to by w tym miejscu skorzystać z ORM. Tam gdzie mamy mieć obiekty - miejmy je, ale gdzie potrzeba prostszych wartości korzystajmy z "normalnych" stdClass czy array.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.