Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CakePHP] Sortowanie wyników po dynamicznym polu
Forum PHP.pl > Forum > PHP > Frameworki
Mike0
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
kleus
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
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.