22%
78%

Kar nekajkrat sem že zasledil da folk moti ker nam findAll(), in vse ostale funkcije modela, vrnejo array. Z Set::map() funkcijo lahko zadevo pretvorimo v objekte.

Recimo da imamo modele User, Profile in pa Comment. Med njimi imamo relacije. User ima en Profil (User $hasOne Profile, Profile $belongsTo User, Comment $belongsTo User, User $hasMany Comments).

V primeru da sedaj hočemo pogledati vse podatke od enega uporabnika z funkcijo:

  1. $userData = $this->User->findAll(array('id', $userID)); // Poiščemo podatke uporabnika v bazi
  2. $this->set('userData', Set::map($userData)); // Podamo podatke v template oz. view

Sedaj bomo v template dobili namesto arraya objekt. In sicer:

  1. $userData->id; // User id
  2. $userData->Profile->id; // Profile id
  3. $userData->Comment->id; // Comment id

Seveda spremenljivke objektov lahko uporabite katerekoli, pač imena polj v tabelah… Hotel sem povedati, da glavni objekt User ne kličemo recimo $userData->User->id ampak samo $userData->id, kar se mi zdi tudi logično.

Sicer mogoče tole vse skup ni kaj posebenga ampak mogoče pa komu pride prav ;)

iNobl: 44% [?]

Tagi: | | | |