<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hello World: &#187; $_referenceMap</title>
	<atom:link href="http://razorblade.netsons.org/tag/_referencemap/feed/" rel="self" type="application/rss+xml" />
	<link>http://razorblade.netsons.org</link>
	<description>Programmazione web e oltre: php5, Zend Framework, jQuery, Actionscript 3.0, Sandy 3D Engine e altro</description>
	<lastBuildDate>Fri, 28 Aug 2009 18:23:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Costruire un’applicazione reale con Zend Framework ( parte 7 )</title>
		<link>http://razorblade.netsons.org/2008/08/19/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-7/</link>
		<comments>http://razorblade.netsons.org/2008/08/19/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-7/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 03:32:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[$_dependentTables]]></category>
		<category><![CDATA[$_name]]></category>
		<category><![CDATA[$_referenceMap]]></category>
		<category><![CDATA[$_rowClass]]></category>
		<category><![CDATA[applicazioni con zend framework]]></category>
		<category><![CDATA[findManyToManyRowset]]></category>
		<category><![CDATA[molti a molti]]></category>
		<category><![CDATA[uno a molti]]></category>
		<category><![CDATA[zend fetchRow]]></category>
		<category><![CDATA[ZF]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=30</guid>
		<description><![CDATA[<h2>$_name, $_referenceMap e $_dependentTables</h2>
<p>Nel codice che componeva le classi per la gestione delle tabelle del nostro database avrete notato la presenza delle proprietà <b>$_name</b>, <b>$_referenceMap</b> e <b>$_dependentTables</b>.
Vediamole nel <a href="http://razorblade.netsons.org/2008/08/19/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-7/">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/' rel='bookmark' title='Permanent Link: Zend Framework: Zend_Form con ReCaptcha'>Zend Framework: Zend_Form con ReCaptcha</a> <small>Utilizzare il webservice ReCaptcha per validare i form ReCaptcha è...</small></li><li><a href='http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/' rel='bookmark' title='Permanent Link: Zend Framework: introduzione al componente Zend_Form'>Zend Framework: introduzione al componente Zend_Form</a> <small>Creare form web con Zend Form Con Zend Framework possiamo...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>$_name, $_referenceMap e $_dependentTables</h2>
<p>Nel codice che componeva le classi per la gestione delle tabelle del nostro database avrete notato la presenza delle proprietà <b>$_name</b>, <b>$_referenceMap</b> e <b>$_dependentTables</b>.<br />
Vediamole nel dettaglio</p>
<p>La proprietà <b>$_name</b> serve a salvare internamente ad una classe il nome della tabella a cui questa è relazionata. Infatti, in caso di omissione di questa proprietà, il sistema andrebbe a cercare una tabella con lo stesso nome della classe, preservando le lettere maiuscole/minuscole. Per fare un esempio, se $_name fosse omessa nella classe Utenti, la tabella Utenti sarebbe ricercata dal sistema e questo genererebbe un errore. Siccome per convenzione nominiamo le nostre classi con la prima lettera maiuscola , la proprietà $_name ci viene incontro per salvare il nome corretto della tabella.</p>
</p>
<p>Vediamo adesso il codice della classe Recensioni. Questa classe è l&#8217;unica a contenere la proprietà $_referenceMap. Questa proprietà è un array che serve ad indicare <b>a quale classe relazionare le foreign keys presente nella tabella in questione</b> e nel nostro caso, la tabella recensioni è l&#8217;unica a contenere foreign keys. Le chiavi di questo array conterranno il nome della relazione ( rules ) ed il loro valore sarà un array contenente la foreign key, il nome della classe a cui la relazione si riferisce ed il nome della colonna di relazione, rispettivamente columns, refTableClass e refColumns.</p>
<p><b>$_referenceMap in Recensioni</b></p>
<pre name="code" class="php">
    protected $_referenceMap = array(
      'Paesi' => array(
        'columns'           => array('id_paese'),
        'refTableClass'     => 'Paesi',
        'refColumns'        => array('id')
      ),
      'Utenti' => array(
        'columns'           => array('id_utente'),
        'refTableClass'     => 'Utenti',
        'refColumns'        => array('id')
      ) ,
      'Abilitazione' => array(
        'columns'           => array('id_utente_abilitazione'),
        'refTableClass'     => 'Utenti',
        'refColumns'        => array('id')
      )
    );
</pre>
<p>Infine <b>$_dependentTables</b> è un array che definisce la o le classi ( tabelle ) direttamente dipendenti. Nel caso di Utenti e Paesi il valore di $_dependentTables è un array contenente Recensioni</p>
<h2>Esempi di utilizzo</h2>
<p>Inseriamo quindi qualche esempio nel nostro IndexController, il seguente codice è un esempio di accesso ai dati del database al <b>row level</b></p>
<p><pre name="code" class="php">
$utenti = new Utenti;
$myself = $utenti->fetchRow('id = 1');
$this->view->myself = $myself->name;
</pre>
<p>Il metodo fetchRow() ritorna una istanza della classe Utente, mentre name richiama l&#8217;omonimo metodo, la possibilità di effettuare una chiamata ad un metodo come se si trattasse di una proprietà l&#8217;abbiamo aggiunta tramite l&#8217;overload del metodo magico __get() ( ricordate? ne abbiamo parlato lo scorso articolo ). Per visualizzare la variabile ottenuta aggiungeremo in index.phtml la seguente linea</p>
<pre name="code" class="php">
&lt;p&gt;Utente ID 1: &lt;?php echo $this->myself;?&gt; &lt;/p&gt;
</pre>
<h3>Il metodo findDependentRowset</h3>
<p>Questo metodo serve per effettuare una relazione <b>uno a molti</b> ed utilizza le proprietà $_referenceMap e $_dependentTables. Di seguito un esempio di utilizzo</p>
<pre name="code" class="php">
$paesi = new Paesi;
$paese= $paesi->fetchRow('id = 1');
$resOne = $paese->findDependentRowset( 'Recensioni');
</pre>
<h3>Il metodo findManyToManyRowset</h3>
<p>Questo metodo serve per effettuare una relazione <b>molti a molti</b> ed utilizza anch&#8217;esso le proprietà $_referenceMap e $_dependentTables di cui abbiamo parlato. Il primo argomento è la tabella di destinazione, metre il secondo argomento è la tabella di incrocio.</p>
<p><pre name="code" class="php">
$utenti = new Utenti;
$myself = $utenti->fetchRow('id = 1');
$resOne = $myself->findManyToManyRowset( 'Paesi','Recensioni');
</pre>
</p>
<p>Il rowset risultante sarà composto da tutti i campi della tabella recensioni e da tutti i campi della tabella paesi, le righe selezionate ovviamente saranno quelle dove id_utente in recensioni è = a 1 ( l&#8217;utente selezionato da fetchRow() ). Questo metodo accetta eventuali regole definite in $_referenceMap. Infatti, in caso volessimo selezionare non le recensioni scritte dall&#8217;id 1 ma bensi le recensioni abilitate dall&#8217;utente id 1, il codice sarebbe il seguente</p>
<p><pre name="code" class="php">
$utenti = new Utenti;
$myself = $utenti->fetchRow('id = 1');
$resOne = $myself->findManyToManyRowset( 'Paesi','Recensioni','Abilitazione');
</pre>
</p>
<p>Testate entrambe i casi eventualmente aggiungendo degli altri record al vostro database. Questo è il codice da inserire in index.phtml</p>
<pre name="code" class="php">
&lt;?php if(count($this-&gt;resOne)): ?&gt;
&lt;table&gt;
&lt;tr&gt;
  &lt;td&gt;Id&lt;/td&gt;
  &lt;td&gt;Nome&lt;/td&gt;
  &lt;td&gt;Descrizione&lt;/td&gt;
&lt;/tr&gt;
&lt;?php foreach($this-&gt;resOne as $p): ?&gt;
&lt;tr&gt;
  &lt;td&gt;&lt;?php  echo $p-&gt;id; ?&gt;&lt;/td&gt;
  &lt;td&gt;&lt;?php  echo $p-&gt;nome; ?&gt;&lt;/td&gt;
  &lt;td&gt;&lt;?php echo $p-&gt;descrizione; ?&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;?php endforeach;?&gt;
&lt;/table&gt;
&lt;?php endif;?&gt;
</pre>
<p>Si conclude così questa settima parte. Per ogni dubbio siete invitati ad utilizzare la funzionalità commento al termine di ogni articolo</p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/' rel='bookmark' title='Permanent Link: Zend Framework: Zend_Form con ReCaptcha'>Zend Framework: Zend_Form con ReCaptcha</a> <small>Utilizzare il webservice ReCaptcha per validare i form ReCaptcha è...</small></li><li><a href='http://razorblade.netsons.org/2008/11/30/zend-framework-introduzione-al-componente-zend_form/' rel='bookmark' title='Permanent Link: Zend Framework: introduzione al componente Zend_Form'>Zend Framework: introduzione al componente Zend_Form</a> <small>Creare form web con Zend Form Con Zend Framework possiamo...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2008/08/19/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Costruire un’applicazione reale con Zend Framework ( parte 6 )</title>
		<link>http://razorblade.netsons.org/2008/08/18/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-6/</link>
		<comments>http://razorblade.netsons.org/2008/08/18/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-6/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 02:50:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[$_dependentTables]]></category>
		<category><![CDATA[$_referenceMap]]></category>
		<category><![CDATA[applicazioni con zend framework]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[gestione database con zend framework]]></category>
		<category><![CDATA[insert]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[Zend_Db_Adapter]]></category>
		<category><![CDATA[Zend_Db_Table]]></category>
		<category><![CDATA[Zend_Db_Table_Abstract]]></category>
		<category><![CDATA[Zend_Db_Table_Row_Abstract]]></category>
		<category><![CDATA[ZF]]></category>

		<guid isPermaLink="false">http://razorblade.netsons.org/?p=29</guid>
		<description><![CDATA[<h2>Gestione del database</h2>
<p>Ritorniamo sull'argomento modelli iniziato qualche articolo fa, in questo articolo tratteremo come recuperare i dati dal database con <b>Zend Framework</b>. Una volta creato l'oggetto $db tramite chiamata al metodo statico factory, potremo procedere in <a href="http://razorblade.netsons.org/2008/08/18/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-6/">[...] Continua</a></p>


Related posts:<ol><li><a href='http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/' rel='bookmark' title='Permanent Link: Zend Framework: Zend_Form con ReCaptcha'>Zend Framework: Zend_Form con ReCaptcha</a> <small>Utilizzare il webservice ReCaptcha per validare i form ReCaptcha è...</small></li><li><a href='http://razorblade.netsons.org/2009/08/28/neobazaar-annunci-gratuiti-esempio-di-una-applicazione-sviluppata-con-zend-framework/' rel='bookmark' title='Permanent Link: Neobazaar annunci gratuiti: esempio di una applicazione sviluppata con Zend Framework'>Neobazaar annunci gratuiti: esempio di una applicazione sviluppata con Zend Framework</a> <small>Nasce Neobazaar.com, annunci gratuiti in Italia: interamente sviluppato con Zend...</small></li><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h2>Gestione del database</h2>
<p>Ritorniamo sull&#8217;argomento modelli iniziato qualche articolo fa, in questo articolo tratteremo come recuperare i dati dal database con <b>Zend Framework</b>. Una volta creato l&#8217;oggetto $db tramite chiamata al metodo statico factory, potremo procedere in diversi modi.</p>
<h2>Effettuare una query</h2>
<p>Tramitel&#8217;utilizzo del metodo &#8216;query&#8217; potremo eseguire direttamente la query da noi specificata sul database, ad esempio:</p>
<pre name="code" class="php">
$data = $db->quote('1990-01-01');
$sql = 'SELECT * FROM utenti WHERE data_di_nascita > ' . $date;
$result = $db->query($sql);
</pre>
<p>Nel codice precedente abbiamo utilizzato il metodo &#8216;quote&#8217; che effettua per noi l&#8217;inserimento degli apici in modo da creare una query corretta ed esente da pericoli di SqlInjections.<br />
Tuttavia potrebbe capitare di dimenticare di usare quote quindi l&#8217;ideale potrebbe essere utilizzare il seguente metodo per scrivere una query corretta e sicura:</p>
<pre name="code" class="php">
$sql = 'SELECT * FROM utenti WHERE data_di_nascita > ?'
$result = $db->query($sql, array('1990-01-01'));
</pre>
<p>In ogni caso, il $result sarà un oggetto su cui potremo effettuare le chiamate dei metodi fetch() e fetchAll() per il recupero dei dati.</p>
<h2>Zend_Db_Select</h2>
<p>Zend_Db_Select è un oggetto che ci viene in aiuto per costruire delle query per la selezione di dati utilizzando maggiormente il linguaggio php piuttosto che SQL. Prendendo in considerazione l&#8217;esempio precedente, il codice qui di seguito mostra come ottenere lo stesso risultato utilizzando questa classe:</p>
<pre name="code" class="php">
$select = new Zend_Db_Select($db);
$select->from('utenti');
$select->where('data_di_nascita > ?', '1990-01-01');
$result = $select->query();
</pre>
<h2>Inserimento, Modifica ed Eliminazione dei dati con Zend_Db_Adapter</h2>
<p>Per effettuare queste operazioni, la classe Zend_Db_Adapter ci offre i metodi insert(), update() e delete() rispettivamente. Il loro utilizzo è decisamente semplice, creare un array associatico con chiave  il nome del campo della nostra tabella e come valore appunto il valore che dovrà avere questo campo, e passarlo ai vari metodi sopra citati nei seguenti modi:</p>
<p><b>inserimento</b></p>
<pre name="code" class="php">
  $data = array(,
    'nome' => 'Mark',
    'cognome' => 'Hollis',
    'inserimento_data' => date('Y-m-d')
  ); 

  $table = 'utenti';
  $rows_affected = $db->insert($table, $data);
  $last_insert_id = $db->lastInsertId();
</pre>
<p><b>modifica</b></p>
<pre name="code" class="php">
  $data = array(,
    'paese' => 'United Kingdom'
  ); 

  $table = 'utenti';
  $where = $db->quoteInto('country = ?', 'UK');
  $db->update($table, $data, $where);
</pre>
<p><b>elimina</b></p>
<pre name="code" class="php">
  $table = 'utenti';
  $where = 'id = 2';
  $rows_affected = $db->delete($table, $where);
</pre>
<h2>Inserimento, Modifica ed Eliminazione dei dati con Zend_Db_Table</h2>
<p>Un&#8217;interessante metodo per la gestione del database ci viene offerto dalla classe Zend_Db_Table. Questa classe gestisce ogni tabella del database come se fosse un oggetto. Prima di cominciare con gli esempi aggiungiamo una nuova tabella al nostro database</p>
<pre name="code" class="php">
CREATE TABLE `utenti` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(99) NOT NULL,
  `password` varchar(32) NOT NULL,
  `nome` varchar(99) NOT NULL,
  `cognome` varchar(99) NOT NULL,
  `sesso` enum('M','F') default NULL,
  `data_di_nascita` datetime NOT NULL,
  `paese` varchar(99) default NULL,
  `cap` varchar(20) NOT NULL,
  `inserimento_data` datetime NOT NULL,
  `inserimento_user_id` int(11) NOT NULL,
  `inserimento_ip` varchar(15) NOT NULL,
  `modifica_data` timestamp NULL default NULL on update CURRENT_TIMESTAMP,
  `modifica_user_id` int(11) default NULL,
  `modifica_ip` varchar(15) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `utenti` (`id`, `username`, `password`, `nome`, `cognome`, `sesso`, `data_di_nascita`, `paese`, `cap`, `inserimento_data`, `inserimento_user_id`, `inserimento_ip`, `modifica_data`, `modifica_user_id`, `modifica_ip`) VALUES
(1, 'Razorblade', '0c88028bf3aa6a6a143ed846f2be1ea4', 'Sergio', 'Rinaudo', 'M', '1982-03-26 20:56:22', NULL, '10023', '2008-08-16 20:56:51', 1, '127.0.0.1', '2008-08-16 20:57:01', NULL, NULL);
</pre>
<p>Abbiamo dunque creato la tabella utenti, quindi possiamo procedere alla creazione della relativa classe. Questo nuovo file andrà salvato nella directory models</p>
<p><b>Utenti.php</b></p>
<pre name="code" class="php">
&lt;?php

  class Utenti extends Zend_Db_Table_Abstract
  {
    protected $_name = 'utenti';
    protected $_rowClass = 'Utente';
    protected $_dependentTables = array('Recensioni');
  }
</pre>
<p>In quanto Utenti estende Zend_Db_Table_Abstract come potete immaginare ne eredita i vari metodi e proprietà. Prima di procedere alla spiegazione di cosa siano le proprietà presenti all&#8217;interno della classe Utenti diamo uno sguardo su come effettuare le medesime operazioni di inserimento, modifica e update utilizzando Zend_Db_Table_Abstract</p>
<p><b>inserimento</b></p>
<pre name="code" class="php">
  $utenti = new Utenti(); 

  $data = array(,
    'nome' => 'Mark',
    'cognome' => 'Hollis',
    'inserimento_data' => date('Y-m-d')
  ); 

  $id = $utenti->insert($data);
</pre>
<p><b>modifica</b></p>
<pre name="code" class="php">
  $utenti = new Utenti(); 

  $data = array(,
    'paese' => 'United Kingdom'
  ); 

  $where = $db->quoteInto('country = ?', 'UK');
  $utenti->update($data, $where);
</pre>
<p><b>elimina</b></p>
<pre name="code" class="php">
  $utenti = new Utenti(); 

  $where = 'id = 2';
  $utenti->delete($where);
</pre>
<h2>Creazione dei nuovi modelli per l&#8217;applicazione</h2>
<p>Prima di listare il codice delle classi delle altre tabelle del nostro database, ovvero recensioni e paesi, dobbiamo fare una precisazione sui livelli di accesso al database, che possono essere di due tipi: tabella e riga. Il primo livello di accesso è utlizzato quando dobbiamo creare dei listati di record, il secondo livello è utilizzato quando abbiamo a che fare con un singolo record della tabella. </p>
<p>Lavorando al secondo livello di accesso è inoltre possibile utilizzare il metodo save() in sostituzione di insert e update, il codice per effettuare entrambe le operazioni è molto simile:</p>
<p><b>inserimento</b></p>
<pre name="code" class="php">
  $utenti = new Utenti();
  $riga = $utenti->fetchNew(); 

  $riga->nome = 'Mark';
  $riga->cognome = 'Hollis'; 

  $riga->save();
</pre>
<p><b>modifica</b></p>
<pre name="code" class="php">
  $utenti = new Utenti();
  $riga = $utenti->fetchRow('id=2'); 

  $riga->nome = 'Mark';
  $riga->cognome = 'Hollis'; 

  $riga->save();
</pre>
<p>La classe Utenti da noi creata poco sopra agisce a livello di tabella. Al suo interno si trova una proprietà, $_rowClass, che indica il nome della classe per la gestione del secondo livello di accesso, ovvero Utente. Il seguente è il codice che ha attualmente Utente:</p>
<pre name="code" class="php">
&lt;?php

  class Utente extends Zend_Db_Table_Row_Abstract
  {
    public function name(){
      $name = trim($this->nome . ' ' . $this->cognome);
      if (empty($name)) {
        $name = $this->username;
      }
      return $name;
    }

    function __get($key)
    {
      if(method_exists($this, $key)){
        return $this->$key();
      }
      return parent::__get($key);
    }
  }
</pre>
<p>Come avrete sicuramente notato, il primo livello di accesso è gestito dalla classe <b>Zend_Db_Table_Abstract </b> mentre il secondo è gestito da <b>Zend_Db_Table_Row_Abstract </b>. Nella classe Utente abbiamo inserito due metodi, il primo serve a ricavare il nome dell&#8217;utente selezionato, il secondo è un metodo magico ( presto disponibile un articolo sui metodi magici su questo blog, fino ad allora vi consiglio una ricerca su google per saperne di più ) che ci da la possibilità di richiamare il metodo name come se fosse una proprietà ( omettendo le parentesi ).</p>
<p>Di seguito trovate il codice attuale delle classi Paesi e Recensioni, da inserire all&#8217;interno della directory models, assieme ad Utenti e Utente</p>
<p><b>Paesi</b></p>
<pre name="code" class="php">
&lt;?php

  class Paesi extends Zend_Db_Table
  {
    protected $_name = 'paesi';
    protected $_dependentTables = array('Recensioni');

    function fetchLatest($count = 10){
      return $this->fetchAll(null,'inserimento_data DESC', $count);
    }
  }
</pre>
<p><b>Recensioni</b></p>
<pre name="code" class="php">
&lt;?php 

  class Recensioni extends Zend_Db_Table_Abstract
  {
    protected $_name = 'recensioni';
    protected $_referenceMap = array(
      'Paesi' => array(
        'columns'           => array('id_paese'),
        'refTableClass'     => 'Paesi',
        'refColumns'        => array('id')
      ),
      'Utenti' => array(
        'columns'           => array('id_utente'),
        'refTableClass'     => 'Utenti',
        'refColumns'        => array('id')
      ) ,
      'Abilitazione' => array(
        'columns'           => array('id_utente_abilitazione'),
        'refTableClass'     => 'Utenti',
        'refColumns'        => array('id')
      )
    );
  }
</pre>
<p>Nel prossimo articolo continueremo il discorso sui modelli, spiegando nel dettaglio a cosa servono le proprietà $_referenceMap e $_dependentTables ed effettueremo dei test di visualizzazione.</p>
<div class="ratings">Note: There is a rating embedded within this post, please visit this post to rate it.</div>


<p>Related posts:<ol><li><a href='http://razorblade.netsons.org/2008/12/05/zend-framework-zend_form-con-recaptcha/' rel='bookmark' title='Permanent Link: Zend Framework: Zend_Form con ReCaptcha'>Zend Framework: Zend_Form con ReCaptcha</a> <small>Utilizzare il webservice ReCaptcha per validare i form ReCaptcha è...</small></li><li><a href='http://razorblade.netsons.org/2009/08/28/neobazaar-annunci-gratuiti-esempio-di-una-applicazione-sviluppata-con-zend-framework/' rel='bookmark' title='Permanent Link: Neobazaar annunci gratuiti: esempio di una applicazione sviluppata con Zend Framework'>Neobazaar annunci gratuiti: esempio di una applicazione sviluppata con Zend Framework</a> <small>Nasce Neobazaar.com, annunci gratuiti in Italia: interamente sviluppato con Zend...</small></li><li><a href='http://razorblade.netsons.org/2009/02/02/zend-framework-gestione-dei-moduli-ed-esempio-modulo-di-amministrazione/' rel='bookmark' title='Permanent Link: Zend Framework: gestione dei moduli ed esempio modulo di amministrazione'>Zend Framework: gestione dei moduli ed esempio modulo di amministrazione</a> <small>Come usare Zend_Layout per la gestione dei moduli In quest'articolo...</small></li></ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://razorblade.netsons.org/2008/08/18/costruire-un%e2%80%99applicazione-reale-con-zend-framework-parte-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
