Yii – gettery do AR
Dodany: 22 stycznia, 2011 | Kategoria: YiiModele 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: activerecord, getter, model, yii Brak komentarzy »