Zend2 - Zend\Db\Sql\Select()->columns

di il
1 risposte

Zend2 - Zend\Db\Sql\Select()->columns

Ciao a tutti ,
sto realizzando un piccolo gestionale in php utilizzando Zend2 come framework e oggi mi sono imbattuto in un problema che non riesco a risolvere.
In un mio Model ho una funzione dove vado a ricavare 2 colonne da una mia tabella in database e vado ad assegnarli 2 alias sfruttando il metodo columns :

	public function getRow()
	{
		$select = new \Zend\Db\Sql\Select();
		$select->from(array('t' => 'nome_tabella'))
			   ->columns(array('alias1' => 'colonna1' ,'alias2' =>'colonna2'));
		// echo $select->getSqlString();
		$resultSet = $this->tableGateway->selectWith($select);
		
		return $resultSet;
	}
Non sto a postare tutta la action del mio Controller dove nella action ritorno i miei risultati in rows
return new ViewModel(array('rows' => $rows));
(vi assicuro che questo giro è fatto correttamente) .
Il mio problema sta nel fatto che nella view , andando a ciclare i miei valori di rows con un foreach riesco a ricavare i miei valori solo nel caso un cui nella function getRow imposti gli alias identici al nome della colonna in db .

<?php foreach ($rows as $row) { ?>
	<tr>
		<td><?php echo $row->alias1; ?></td>
		<td><?php echo $row->alias2; ?></td>
	</tr>
<?php  }  ?>
Per capirci in questi snipet di codice di esempio che ho messo se in getRow() inserisco
 ->columns(array('colonna1' => 'colonna1' ,'colonna2' =>'colonna2'));
e nella view vado logicamente a cambiare le alias1 con colonna1 e alias2 con colonna2 funziona ; se invece ad alias1 e alias2 assegno valori diversi (logicamente un alias con lo stesso nome della collona non ha alcun senso ) il tutto non funziona e il mio foreach nella view mi stampa le 2 colonne di ogni riga (giusto numero di righe a seconda del count della query che ho anche stampato
echo $select->getSqlString(); 
) vuote.

Dove sto sbagliando ?
Aspetto vostre notizie

ciao ciao
ilDodo

1 Risposte

  • Re: Zend2 - Zend\Db\Sql\Select()->columns

    Ho risolto il problema .
    Nella view mi dava un undefined property .
    Il problema stava nel model
    
    namespace ...\Model;
    class Table 
    {
             // ...
    	 //N.B. se vado a creare degli alias in una query devo necessariamente aggiungere le ipotetiche colonne anche nel model . 
    	 //se no non riesco a ricavarle nella view ! infatti mi da un undefined property .
    	 public $alias1;
    	 public $alias2;
    
    	 public function exchangeArray($data)
    	 {
    	  $this->alias1 			  	   = (!empty($data['alias1']))			     ? $data['alias1']  			     :  null 		 ;
    	  $this->alias2 			           = (!empty($data['alias2']))			     ? $data['alias2']  			     :  null 		 ;
              //...
    	 }
    }
    non dichiarandolo nella view ricevevo , giustamente , un undefined property che effettivamente non c'era .
    Per me si può chiudere il topic
Devi accedere o registrarti per scrivere nel forum
1 risposte