I Virtual Fields sono dei “Campi Virtuali” creati utilizzando un’espressione SQL ed assegnati come campo ad un modello.

Questi campi non possono essere salvati, ma verranno trattati come qualsiasi altro campo ed inseriti nell’indice del modello insieme gli altri campi.

Per i nostri esempi partiremo da una tabella “contacts” che conterrà i nostri contatti.

Come possiamo notare i campi nome ( “name” ) e cognome ( “surname” ) sono divisi.

Richiamare questi campi in una view spesso porta ad eseguire operazioni di concatenazione che possiamo evitare utilizzando i Virtual Fields.

Ecco come creare un Virtual Field in CakePHP

Utilizzando la funzione CONCAT di MySQL andiamo a concatenare i due campi “name” e “surname” divisi da uno spazio.

Il nome del nostro Virtual Field è la chiave dell’array ( “fullname” ) , il valore dell’array è la funzione CONCAT ed i nostri campi sono richiamati utilizzando la sintassi “NomeModello.NomeCampo“.

Possiamo inoltre notare che questo campo è stato assegnato come displayField ed è quindi utilizzabile come qualsiasi altro campo.

È naturalmente possibile aggiungere ulteriori Virtual Fields.

Eseguendo un Find nel modello Contact verranno restituiti anche i Virtual Fields. Assegnandoli ad una View possiamo utilizzarli come un qualsiasi altro campo.

Naturalmente possiamo assegnare i Virtual Fields anche in un metodo

In questo modo il Virtual Field “userInfos” sarà disponibile solamente richiamando il metodo “getUserInfos”.

I Virtual Fields sono uno strumento fantastico per mantenere coerenza in fase di presentazione e ridurre al minimo le concatenazioni delle stringhe o altre operazioni ridondanti sui dati mantenendo invariati i campi originali.

Possiamo utilizzare i Virtual Fields anche nella paginazione mantenendo l’ordinazione sul campo.

Un altro piccolo esempio utilizzando la funzione DATE_FORMAT di MySQL

Richiamando il campo “createdIta” otteniamo una data “giorno/mese/Anno” al posto della data “Anno-mese-giorno Ora:minuti:secondi“.

Vi lascio Campo libero (scusate la battuta) e vi auguro buon divertimento con i Virtual Fields di CakePHP!

Seguimi

Walter Raponi

Appassionato di torte!

Ingredienti base: Model, View, Controller! Un grande framework come CakePHP e la nostra torta è pronta!
Seguimi

Latest posts by Walter Raponi (see all)