Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Doctrine] Konwersja SQL query do Doctrine
Forum PHP.pl > Forum > PHP > Frameworki
flip02
  1. SELECT DISTINCT car.type_id, car_type.name FROM car LEFT JOIN car_type ON car_type.id = car.type_id
  2. ORDER BY car_type.name ASC


powyższe zwraca prawidłowy wynik, jeśli przekształce to na poniżesze doklejają mi się dodatkowa kolumna car_type.id, który rozwala cały wynik i której mi nie potrzeba:

  1.  
  2. $qu = Doctrine_Query::create()
  3. ->select('DISTINCT c.type_id, t.name')
  4. ->from('car c')
  5. ->leftJoin('c.CarType t ON t.id = c.type_id')
  6. ->orderBy('t.name ASC');
  7.  
  8. $this->productTypes = $qu->fetchOne();


W dodatku DISTINCT nie ma żadnego efektu. Co robię źle?
wdev
Spróbuj zmienić sposób hydracji, np. zrobić ->execute(null, Doctrine_Core::HYDRATE_ARRAY). Problem Doctrine polega na tym, że stara się ona uzyskać id, żeby stworzyć poprawny obiekt. Jeśli nie, to zostaje jeszcze RawSql() wink.gif

  1.  
  2. $qu = new Doctrine_RawSql();
  3.  
  4. $qu->select('{c.type_id}, {t.name}')
  5. ->from('car c')
  6. ->leftJoin('c.CarType t ON t.id = c.type_id')
  7. ->orderBy('t.name ASC')
  8. ->distinct();
  9.  
  10. $this->productTypes = $qu->fetchOne();


Powinno zadziałać smile.gif
flip02
już prawie jest dobrze. Dostaję:
  1. The root class of the query (alias c) must have at least one field selected.


Query jakie zostało wygenerowane przez sf jest w porządku, po wykonaniu go na bazie zwraca co ma zwracać.
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.