Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] sortowaniu kolumny varchar jak po liczbie w Zend_Db_Table_Select
Forum PHP.pl > Forum > PHP > Frameworki
kaem
Witam,
próbuję zrobić sortowanie po kolumnie typu varchar, tak żeby traktowało ją jako liczbę. Znalazłem rozwiązanie, polegające na przemnożeniu kolumny przez 1 albo dodanie 0. W czystym sql wyglądało by to tak:
  1. ORDER BY STATUS*1

Jak dam:
  1. select()->from($this->table)->order('symbol*1')
to całe wyrażenie bierze w odwrócone apostrofy czyli mam `symbol *1` co jest oczywiście źle. Błąd: 'Unknown column 'symbol *1''.
Jak to można rozwiązać?
Sephirus
Zapoznaj się z Zend_Db_Expr lub zobacz to: Adding expression columns

wink.gif
vermis
Jeśli chodzi o dodanie wyrażenia to patrz co pisał @Sephirus
Natomiast jeśli chodzi o konwersję typów w mysql to lepiej używać CAST()/CONVERT()
kaem
Dalej mam ten sam błąd. ;/ Zrobiłem (nie wiem czy dobrze)
  1. ->order(new Zend_Db_Expr('symbol * 1'))

Błąd: QLSTATE[42S22]: Column not found: 1054 Unknown column 'symbol * 1' in 'order clause' ;
Sephirus
Hmm nie pamiętam do końca czy order obsługuje EXPR ale powinien - zawsze możesz zrobić selecta jako zwykłe zapytanie a nie poprzez select()->....
kaem
Chyba znalazłem rozwiązanie:
Coś w linku od @Sephirus'a pisało o nawiasach. nie do końca rozumiałem o co chodzi, ale napisałem coś takiego:
  1. new Zend_Db_Expr('(symbol)*1')

i wygląda na to że działa. Dzięki:)
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.