Yii – gettery do AR

Dodany: Styczeń 22nd, 2011 | Kategoria: Yii

Modele korzystające z AR zwracają dane bezpośrednio z bazy, co jednak gdy chcemy np. przerobić datę tam zapisaną z postaci unix na ludzką ??
Teoretycznie najprościej było by po wczytaniu rekordu zaktualizować go (np. $this->time = date('H:i:s', $time) w afterFind()), ale ma to jedną wadę – do formularzy edycyjnych trafi ta zmodyfikowana data, a przecież do bazy trafia ona jako INT, więc się wszystko sypnie.
Odpowiedź prosta – napisać nową metodę gettera w modelu, która zwraca datę, np. getCzytelnaData():

1
2
3
public function getCzytelnaData() {
    return date('H:i:s', $this->data);
}

Potem możemy wypisać taką datę w widoku zamiast $this->data które zwraca np. 1123123123, to $this->czytelnaData (metoda magiczna CActiveRecord::__get), a do widgetów wpisujemy jako pole z modelu ‚czytelnaData’ :) Takiego pola nie ma w bazie, ale to nie znaczy, ze nie musi być w modelu – w ten sposób mozna sporo bajerów zrobić ;)

Tagi: , , , Brak komentarzy »