Capita spesso di dover estrarre dati da un database (nel mio caso MySQL) per poterli in qualche modo visualizzare. CakePHP mette a disposizione delle funzioni molto utili a questo scopo, che andremo a vedere ora in dettaglio.
Supponiamo di aver definito un Model di nome User (e quindi la relativa tabella MySQL, secondo le convenzioni di CakePHP, si chiamerà Users). All’interno del model user.php andiamo a creare la seguente funzione:
1 2 3 4 5 6 | function getDbUser() { $ret = $this->query("SELECT surname FROM users WHERE id = 1"); $name = $ret[0]['users']['surname']; return $name; } |
Vediamo nello specifico che cosa fa:
- effettua la seguente query: SELECT surname FROM users WHERE id = 1
- salva il cognome, ottenuto dalla query appena vista nell’array $ret, nella variabile $name
- restituisce la variabile $name
Per capire meglio cosa fa la riga $ret[0]['users']['surname'], è utile analizzare il contenuto dell’array $ret (per farsi stampare l’array possiamo usare la funzione $this->log($ret);):
1 2 3 4 5 6 7 8 9 10 11 | ( [0] -> Array ( [users] -> Array ( [surname] -> pallino ) ) ) |
Il numero 0 sta a significare che l’array contiene un solo elemento, che è a sua volta un array di nome users (il nome della tabella del database) che a sua volta contiene il campo surname a cui è associato il valore che stiamo cercando. Appare quindi evidente che $ret[0]['users']['surname'] non fa altro che restituire il surname, ovvero “pallino”.
Infine per eseguire la query in un controller, tipicamente in users_controller.php, basterà chiamarla con questa sintassi:
$surname= $this->User->getDbUser();
dove User è il nome del model e getDbUser() quella della funzione che abbiamo definito al suo interno.


