Indice

Relazioni

Iter di gestione delle relazioni

La gestione delle relazioni può venir definita in 3 fasi principali così divise:

Inizializzazione

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:

addDescribeRelation($tableName, $keyMapping, $tipoRelazione, $alias = null) Il metodo definisce la relazione fra la tabella principale ed una tabella collegata e prende i seguenti parametri:

$keyMapping = array(
  'PROGNOTE'=>'PROGNOTE'
);

Esempio d'uso:

$this->addDescribeRelation('BOR_UTELIV',array('CODUTE'=>'CODUTENTE'),itaModelServiceData::RELATION_TYPE_ONE_TO_MANY);

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:

addUpdateOperation()

Modifica di una riga preesistente, prende in input 3 parametri:

addDeleteOperation()

Eliminazione di una riga preesistente, prende in input 3 parametri:

Restituzione dei dati relazionati

La superclasse, durante la fase di scrittura sul database, interrogherà la pagina che ha originato la richiesta per ricevere i dati relativi alle tabelle relazionate. Risulterà 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:

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(
    ...
  )
);

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().