Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] sortowaniu kolumny varchar jak po liczbie w Zend_Db_Table_Select
kaem
post
Post #1





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


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ć?

Ten post edytował kaem 17.09.2012, 09:59:37
Go to the top of the page
+Quote Post
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zapoznaj się z Zend_Db_Expr lub zobacz to: Adding expression columns

wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
vermis
post
Post #3





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


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()


--------------------
Go to the top of the page
+Quote Post
kaem
post
Post #4





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


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' ;
Go to the top of the page
+Quote Post
Sephirus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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()->....


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
kaem
post
Post #6





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


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:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 14:55