Nell'app Zend, utilizzo Zend\Db\TableGateway
e Zend\Db\Sql
per recuperare i dati dal database MySQL come di seguito.Questo risultato è un set di risultati forward, il richiamo rewind() dopo lo spostamento non è supportato - Zend
Modello -
public function getCandidateEduQualifications($id)
{
$id = (int) $id;
$rowset = $this->tableGateway->select(function (Sql\Select $select) use ($id)
{
$select->where
->AND->NEST->equalTo('candidate_id', $id)
->AND->equalTo('qualification_category', 'Educational');
});
return $rowset;
}
View -
Ho appena iterare $ set di righe e l'eco in vista. Ma dà errore quando prova a eche due o più volte. L'iterazione singola funziona.
Tale risultato è un set di risultati forward solo, chiamando riavvolgimento() dopo andare avanti non è supportato
posso risolverlo caricando in un'altra matrice in vista. Ma è il modo migliore? C'è un altro modo per gestire questo?
$records = array();
foreach ($edu_qualifications as $result) {
$records[] = $result;
}
EDIT -
$resultSet->buffer();
risolto il problema.
Che dire del buffer()? – ChamingaD
Con 'Zend \ Db \ ResultSet \ Resultset :: buffer()' ogni volta che viene richiamato 'Zend \ Db \ ResultSet \ Resultset :: current()' la riga corrente verrà mantenuta in 'Zend \ Db \ ResultSet \ Resultset: : $ buffer' mentre si scorre il set. Questo ciclo potrebbe essere un 'foreach()'.Quindi, basicamente sul primo 'foreach()' i dati verranno dal tuo database e sul secondo ciclo verrà da 'Zend \ Db \ ResultSet \ Resultset :: $ buffer'. Se vuoi usare 'Zend \ Db \ ResultSet \ Resultset :: buffer()' devi invocarlo prima di eseguire il looping del set perché il set deve sapere che ha bisogno di buffer. –
Chi ha deciso che era una buona idea non poter ripetere lo stesso set di risultati due volte? Questo è solo 10 livelli di ritardo. – stef