Voici mon modèle:résultats d'une requête Comparaison mysql dans ZF2
<?php
namespace Object\Model;
use Zend\Db\TableGateway\TableGateway;
use Zend\Db\Sql\Sql;
class SiteVisitsTable {
protected $tableGateway;
protected $sql;
public function __construct(TableGateway $tableGateway) {
$this->tableGateway = $tableGateway;
$this->sql = new Sql($this->tableGateway->adapter);
}
public function getVisits($field = '', $value = '') {
if ($field = '' || $value = ''):
$rowset = $this->tableGateway->select(array($field => $value));
else:
$rowset = $this->tableGateway->select();
endif;
$row = $rowset->current();
return $row;
}
public function getAllVisits() {
$adapter = $this->tableGateway->adapter;
$select = $this->sql->select();
$select->from($this->tableGateway->getTable());
$select->columns(array(
new \Zend\Db\Sql\Expression('SUM(`unique`) as `unique`'),
new \Zend\Db\Sql\Expression('SUM(`impressions`) as `impressions`'),
));
$selectString = $this->sql->getSqlStringForSqlObject($select);
$resultSet = $adapter->query($selectString, $adapter::QUERY_MODE_EXECUTE);
return $resultSet;
}
public function addVisit($date) {
$currentVisits = $this->getVisits('date', $date);
if ($currentVisits) {
$data = array(
'unique' => $currentVisits + 1,
);
$this->tableGateway->update($data, array('date' => $date));
} else {
$data = array(
'unique' => 1,
'impressions' => 1,
);
$this->tableGateway->insert($data);
}
}
}
Dans les getAllVisits méthode publique que j'ai une requête SELECT CUM MySQL. Tout va bien avec la requête elle-même, mais je ne peux pas imprimer les valeurs de la requête. Voici la décharge de resultSet $:
Zend\Db\ResultSet\ResultSet Object
(
[allowedReturnTypes:protected] => Array
(
[0] => arrayobject
[1] => array
)
[arrayObjectPrototype:protected] => ArrayObject Object
(
[storage:ArrayObject:private] => Array
(
)
)
[returnType:protected] => arrayobject
[buffer:protected] =>
[count:protected] => 1
[dataSource:protected] => Zend\Db\Adapter\Driver\Pdo\Result Object
(
[statementMode:protected] => forward
[resource:protected] => PDOStatement Object
(
[queryString] => SELECT SUM(`unique`) as `unique`, SUM(`impressions`) as `impressions` FROM `site_visits`
)
[options:protected] =>
[currentComplete:protected] =>
[currentData:protected] =>
[position:protected] => -1
[generatedValue:protected] => 0
[rowCount:protected] => 1
)
[fieldCount:protected] => 2
[position:protected] =>
)
Vous pouvez voir la touche queryString et quand j'exécute la requête « brut » dans phpmyadmin, il affiche les valeurs de la base de données MySQL, mais en essayant de les afficher dans ZF2 , ça ne semble pas fonctionner.
Voici mon contrôleur:
return new ViewModel(array(
'todayVisits' => $this->getSiteVisitsTable()->getVisits('date', date('Y-m-d')),
'allVisits' => $this->getSiteVisitsTable()->getAllVisits(),
'yesterdayVisits' => $this->getSiteVisitsTable()->getVisits('date', ''),
'inactiveBlogs' => $this->getBlogsTable()->getInactiveBlogs(),
'inactiveUsers' => $this->getUsersTable()->getUsers('is_active', '0'),
'notes' => $this->getAdminNotesTable()->getAllNotes(),
'form' => $form,
));
Et moi:
<article class="stats_overview">
<div class="overview_today">
<p class="overview_day">Днес</p>
<p class="overview_count"><?php echo $todayVisits->unique; ?></p>
<p class="overview_type">посещения</p>
<p class="overview_count"><?php echo $todayVisits->impressions; ?></p>
<p class="overview_type">импресии</p>
</div>
<div class="overview_previous">
<p class="overview_day">Общо</p>
<p class="overview_count"><?php echo $allVisits->unique; ?></p>
<p class="overview_type">посещения</p>
<p class="overview_count"><?php echo $allVisits->impressions; ?></p>
<p class="overview_type">импресии</p>
</div>
</article>
post-scriptum J'ai le même problème avec les requêtes JOIN! :) Merci d'avance.
Quelles sont les erreurs pour obtenir l'accès aux valeurs interrogées? –
Vous ne savez pas si vous rencontrez un problème en utilisant le mot réservé "unique" comme nom de colonne. – Andrew
Je ne reçois rien. Ils n'existent tout simplement pas. Je n'ai aucune erreur. La requête est correcte, car j'utilise des apostrophes (oui, unique est un mot réservé). Lorsque j'exécute la requête de la queryString (voir la sauvegarde) dans phpmyadmin, j'obtiens le résultat voulu, mais en ZF2, je ne reçois rien. –