Articoli marcati con tag ‘sql’
Utilizzare operatori sql in CakePHP find()
Riporto il sunto di una discussione sviluppata sul Gruppo Google di CakePHP inerente all’utilizzo di operatori SQL nelle operazioni di estrazione dati (finder query):
http://groups.google.com/group/cake-php/browse_thread/thread/89dd8a8846bad3a1?hl=en
L’autore ha la necessità di estrarre da un campo di testo un numero limitato di caratteri utilizzando l’operatore SQL LEFT:
LEFT(Table.field, len) as new_field_name
La soluzione proposta (e testata) consiste nell’utilizzo dell’operatore direttamente nell’elenco dei campi da estrarre come parametro aggiuntivo dell’operazione find().
$list = $this->User->find( "all", array(
fields = array(
'id',
'username',
'left(User.username, 5) as short_username'
)
));
Questo comando di estrazione genera come output la seguente struttura associativa:
array(
0 => array(
[User] => array(
[id] => 1
[username] = Marco Pegoraro
)
[0] => array(
[short_username] => Marco
)
)
)
Si può dunque notare come il campo ottenuto mediante operatore SQL sia stato erogato fuori dal raggruppamento del modello e inserito sotto ad un indice numerico.
Ho fatto alcuni test utilizzando le relazioni tra i modelli (belongsTo) e ho estratto campi da più modelli definendo campi elaborati da più modelli. Tali campi vengono sempre proposti sotto l’indice 0.
Al momento in cui scrivo la discussione è in attesa di una soluzione per modificare in modo esplicito il nome del raggruppamento di questi campi prodotto di un operatore SQL.