Strumenti Utente

Strumenti Sito


sviluppo:cityware_relazioni

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
sviluppo:cityware_relazioni [2016/10/18 15:20] l.cardinalisviluppo:cityware_relazioni [2018/03/19 10:45] (versione attuale) – modifica esterna 127.0.0.1
Linea 1: Linea 1:
 ====== Relazioni ====== ====== Relazioni ======
  
-All'interno della superclasse cwbBpaGenModel ci sono i seguenti metodi da utilizzare per la gestione delle relazioni:+====== Iter di gestione delle relazioni ======
  
 +La gestione delle relazioni può venir definita in 3 fasi principali così divise:
  
-  * **addDescribeRelation($tableName, $keyMapping, $tipoRelazione, $alias = null)**: Va usato su initVars per passare le info della relazione. es.  +===== Inizializzazione ===== 
-$this->addDescribeRelation('BOR_UTELIV',array('CODUTE'=>'CODUTENTE'),itaModelServiceData::RELATION_TYPE_ONE_TO_MANY);+Operazione da effettuare nell'initVars, definisce a livello generico le relazioni fra la tabella principale e le tabelle collegate. Per ogni relazione è necessario richiamare il metodo della superclasse **addDescribeRelation** come definito quì sotto:
  
-  * **addInsertOperation($tableName, $alias = null)**: Serve per aggiungere una nuova operazione di insert su una specifica relazione.es. +**//addDescribeRelation($tableName, $keyMapping, $tipoRelazione, $alias = null)//** 
-         $this->addInsertOperation('BOR_UTELIV'); +Il metodo definisce la relazione fra la tabella principale ed una tabella collegata e prende i seguenti parametri
-  * ** addUpdateOperation($tableName, $pks, $alias = null)**: Serve per aggiungere una nuova operazione di update su una specifica relazione. es. +  * **$tableName** Eil nome della tabella collegata alla principale 
-         $this->addUpdateOperation('BOR_UTELIV', array('IDUTELIV' => $this->gridLivelli[$key]['IDUTELIV'])); +  * **$keyMapping** E' un array contenente i campi della foreign key fra tabella principale e tabella collegata
- * ** addDeleteOperation($tableName$pks, $alias = null)**: Serve per aggiungere una nuova operazione di delete su una specifica relazionees. +<code> 
-         $this->addDeleteOperation('BOR_UTELIV', array('IDUTELIV' => $this->gridLivelli[$key]['IDUTELIV']));+$keyMapping = array( 
 +  'PROGNOTE'=>'PROGNOTE' 
 +); 
 +</code> 
 +  * **$tipoRelazione** Indica il tipo di relazione (1:11:nn:n, etc.) 
 +  * **$alias** Indica un alias per la relazione, è necessario nel caso la tabella primaria abbia più relazioni verso la stessa tabella (es. tabella delle località che può essere collegata ad un soggetto sia per il luogo di nascita che per la residenza). 
 +Esempio d'uso: 
 +<code> 
 +$this->addDescribeRelation('BOR_UTELIV',array('CODUTE'=>'CODUTENTE'),itaModelServiceData::RELATION_TYPE_ONE_TO_MANY); 
 +</code>
  
 +===== Definizione operazioni =====
 +Risulta necessario definire le operazioni relative all'inserimento, modifica e cancellazione dal database delle righe specifiche sulle tabelle relazionate, questa operazione può venir fatta man mano che le operazioni in questione vengono definite o fornite in blocco in fase di preAggiungi/preAggiorna/preConfermaCancella.
  
 +Sono previste 3 operazioni:
 +==== addInsertOperation() ====
 +Inserimento di una nuova riga, prende in input 2 parametri:
 +  * **//$table//**: nome della tabella collegata alla tabella principale
 +  * **//$alias//**: (opzionalmente) l'alias della relazione come definito in fase di inizializzazione.
 +==== addUpdateOperation() ====
 +Modifica di una riga preesistente, prende in input 3 parametri:
 +  * **//$table//**: nome della tabella collegata alla tabella principale
 +  * **//$keys//**: array associativo contenente la primary key della riga da modificare. L'array è in forma 'chiave'=>$valore.
 +  * **//$alias//**: (opzionalmente) l'alias della relazione come definito in fase di inizializzazione.
 +==== addDeleteOperation() ====
 +Eliminazione di una riga preesistente, prende in input 3 parametri:
 +  * **//$table//**: nome della tabella collegata alla tabella principale
 +  * **//$keys//**: array associativo contenente la primary key della riga da eliminare. L'array è in forma 'chiave'=>$valore.
 +  * **//$alias//**: (opzionalmente) l'alias della relazione come definito in fase di inizializzazione.
  
-Il parametro 'alias' va usato nel caso ci siano più relazioni sulla stessa tabellain questo caso oltre a tableName va passato l'alias con cui identificare la relazione. Se non passato prende di default lo stesso valore di tableName.+===== Restituzione dei dati relazionati ===== 
 +La superclassedurante la fase di scrittura sul database, interrogherà la pagina che ha originato la richiesta per ricevere i dati relativi alle tabelle relazionateRisulterà dunque, nelle pagine che fanno uso di relazioni, necessario ridefinire due metodi:
  
 +==== getDataRelation() ====
 +Il metodo getDataRelation restituisce un array contenente tutti i dati relazionati così come vengono letti dal database, quindi i dati definiti precedentemente alle modifiche effettuate.
 +Il metodo riceve in input il tipo di operazione che sta venendo effettuata sul record principale (inserimento/aggiornamento/eliminazione).
 +Il metodo deve restituire in output un array in tale forma:
 +<code>
 +return array(
 +  'Alias_Rel1'=>array(
 +    array(
 +      'Campo1'=>'Valore1_1',
 +      'Campo2'=>'Valore1_2',
 +      'Campo3'=>'Valore1_3',
 +      ...
 +    ),
 +    array(
 +      'Campo1'=>'Valore2_1',
 +      'Campo2'=>'Valore2_2',
 +      'Campo3'=>'Valore2_3',
 +      ...
 +    ),
 +    ...
 +  ),
 +  'Alias_Rel2'=>array(
 +    ...
 +  )
 +);
 +</code>
 +==== getDataRelationView() ====
 +Questo metodo restituisce i soli dati modificati di una specifica relazione.
 +Il metodo fornisce in input il nome della tabella e l'eventuale alias della relazione di cui sta richiedendo i dati.
 +I dati devono essere restituiti sotto forma di array di array e contenere unicamente i dati modificati.
 +Nel caso di eliminazione di righe tali righe non devono comparire nell'array restituito da getDataRelationView().
sviluppo/cityware_relazioni.1476804050.txt.gz · Ultima modifica: 2018/03/19 10:45 (modifica esterna)