Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CakePHP] Sortowanie wyników po dynamicznym polu
Mike0
post 27.11.2012, 17:14:00
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 10.03.2011

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


Witam, mam następujący kod:
  1. $this->paginate = array(
  2. 'limit' => 3000,
  3. 'conditions' => array(
  4. 'City.deleted' => '0'
  5. ),
  6. 'fields' => array('City.*', 'Country.*', 'IF(City.country_id=147, 1, 0) as ordinal'),
  7. 'order' => array(
  8. 'ordinal' => 'desc',
  9. 'City.name' => 'asc'
  10. ),
  11. );

Problem w tym, że CakePHP przy składaniu zapytania pomija 'ordinal' => 'desc' i sortuje wyłącznie po 'City.name' => 'asc'. Czy wiecie może jak to poprawić?


btw. Czy dobrze nazwałem IF(City.country_id=147, 1, 0) as ordinal jako pole dynamiczne? wstydnis.gif

Ten post edytował Mike0 27.11.2012, 17:14:44
Go to the top of the page
+Quote Post
kleus
post 27.11.2012, 19:30:04
Post #2





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 22.10.2009
Skąd: Siędzę

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


Cytat(Mike0 @ 27.11.2012, 17:14:00 ) *
btw. Czy dobrze nazwałem IF(City.country_id=147, 1, 0) as ordinal jako pole dynamiczne? wstydnis.gif


Sprawa wyglada tak:

ad. Czy dobrze nazwałem...
NIE NIE NIE!
w taki sposób otrzymasz cos takiego
  1. 'City' => array(
  2. // dane z city
  3. ),
  4. '0' => array(
  5. 'ordinal' => 'costam' // ordinal
  6. )
  7. )


Moim zdaniem trzeba zrobic to tak jak w book:
czyli przed paginate:
  1. $this->City->virtualFields['ordinal'] = 'IF(City.country_id=147, 1, 0)';
  2. // teraz paginate


w taki sposob otrzymasz ordinal w tablicy City

pozdrawiam
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:48