RTFB!
1 Jul
Ravno v neki zadevi ki jo delam sem imel primer kjer sem moral dobiti iz baze nek podatek združen iz dveh polj. Kako to storiti brez da bi uporabil svoj SQL stavek in pa CONCAT ipd. kar bi ga seveda lahko ampak zakaj bi če imamo za to funkcijo ki nam naredi z podatki kar želimo.
Funkcija afterFind() nam omogoči da z podatki ki jih dobimo iz baze naredimo kar hočemo, še predno podatki pridejo v view (template).
Recimo en primer. Rabim dobiti v select box (generateList() funkcija) podatek mesta in pa poštne številke kot value in kot key imam seveda id mesta….
class Citys extends AppModel { var $name = 'Citys'; function afterFind($results) { foreach ($results as $key =>; $val) { $results[$key]['Citys']['NameAndPostalCode'] = $val['Citys']['name'].' ('.$val['Citys']['postal_code'].')'; } return $results; } }
$this->set('Citys', $this->Citys->generateList( 'domain' => $this->Session->read('domain')), null, null, '{n}.Citys.city_id', '{n}.Citys.NameAndPostalCode' ) );
Zadeva je dokaj uporabna in pisanja svojega SQL stavka zato bi bilo nesmiselno. Zakaj ? Zato ker bi ga moral pisati na večih mestih in iz tega potem pride zmeda. Tukaj naredim to na enem mestu in imam povsod iste podatke.
Seveda v tej funkciji lahko naredimo poljubno z podatki…
Upam da pride kakšnemu peku prav
iNobl: 22% [?]
Tagi:
Leave a reply