DB Engine

Overview

Il DBEngine è un componente pensato per dare una formattazione particolare e facilmente utilizzabile alle query che vengono eseguite dal sito.

Lo scopo è quello di fornire un sistema scalabile che permetta, con pochi conandi, di creare modelli anche complessi che permettano una discreta flessibilità alle query da eseguire. 

La struttura che si va a descrivere normalmente è infatti logica e slegata dalla distribuzione fisica di viste e tabelle. Vediamo un esempio:

 

DBEngine::get( )

->_useModel( 'articles_view' )

->Select( 

array(

    "fields"=> array ( "id" ) 

 ) 

);

DBEngine::get( )

E' la chiamata standard per utilizzare l'oggetto DBEngine.

 

->_useModel( 'articles_view' ) 

questo metodo restituisce l'istanza di DBEngine configurata per utilizzare il modello 'articles_view' (per conoscere la configurazione di un modello riferirsi alla sezione DBEngineDescriptor)

 

->Select( array(

    "fields"=> array ( "id" )

 ) );

 

e questa è la query vera e propria che si traduce in "select id from <modello articles_view>".

 

Metodi e Configurazione

I metodi che offre questo componente sono i seguenti:

  • Select metodo che effettua l'operazione di selezione su un modello utilizzato
  • Insert metodo che effettua l'inserimento di una tupla nel modello utilizzato
  • Update metodo che effettua l'aggiornamento di una o piu' tuple del modello utilizzato
  • Delete Metodo che elimina una o piu' tuple dal modello utilizzato
  • Execute Metodo che esegue una query configurata nel modello utilizzato

NB: Ognuno dei metodi puo' essere richiamato indipendentemente da un qualunque modello omettendo l'istruzione "_useModel". Ogni metodo, presenta comunque una sua peculiarità a riguardo che spiegheremo di volta in volta.

 

Prima di vedere nel dettaglio ogni singolo metodo, spendiamo due parole per vedere la configurazione accettata generalmente. Ogni metodo, infatti, accetta, come parametro, un array associativo contenente la lista di parametri che ora spiegheremo nel dettaglio.

I parametri accettati sono:

  • fields
  • tableAliases
  • from
  • filters
  • orders
  • limits

Fields

Il parametro fields indica i campi logici che verranno utilizzati dalla query. Puo' essere formattato in 3 modi, vediamoli

"fields"=>