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.
No comments yet.