我在cakephp 3.0中创建了一个自定义查询,但是当我想在表中显示数据时,行是空的。这是我在控制器中的功能:
public function estadisticas()
{
$conn = ConnectionManager::get('default');
$stmt = $conn->execute('SELECT c.nombre, c.idComplejo, t.canchaFK, count(*) AS cantidadTurnos FROM turno t inner join complejo c inner join ciudad cc inner join cancha ca inner join usuario u on t.canchaFK=ca.idCancha and c.idComplejo=ca.complejoFK and u.idUsuario=t.usuarioFK WHERE u.esComplejo=0 and cc.paisFK="1" and u.paisFK="1" and cc.idCiudad=c.ciudadFK and noAsistio=0 and fecha between "2016-07-01" and "2016-07-30" group by canchaFK');
$turnostotales = $stmt ->fetchAll('assoc');
$this->set('turnostotales',$turnostotales);
}
查询效果很好。此外,该页面显示了19个空行的表(19行是查询的结果)。
这是我显示数据的代码部分:
<table cellpadding="0" cellspacing="0">
<thead>
<tr>
<th><?= $this->Paginator->sort('idComplejo', 'ID Complejo') ?></th>
<th><?= $this->Paginator->sort('canchaFK', '# Cancha') ?></th>
<th><?= $this->Paginator->sort('cantidadTurnos', 'Cantidad Turnos') ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($turnostotales as $turnostotale): ?>
<tr>
<td><?= h($turnostotale->idComplejo) ?></td>
<td><?= h($turnostotale->canchaFK) ?></td>
<td><?= h($turnostotale->cantidadTurnos) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
感谢您的帮助!
答案 0 :(得分:0)
修正了其他人阅读的查询格式:
SELECT c.nombre,
c.idcomplejo,
t.canchafk,
Count(*) AS cantidadturnos
FROM turno t
INNER JOIN complejo c
INNER JOIN ciudad cc
INNER JOIN cancha ca
INNER JOIN usuario u
ON t.canchafk=ca.idcancha
AND c.idcomplejo=ca.complejofk
AND u.idusuario=t.usuariofk
where u.escomplejo=0
AND cc.paisfk="1"
AND u.paisfk="1"
AND cc.idciudad=c.ciudadfk
AND noasistio=0
AND fecha BETWEEN "2016-07-01" AND "2016-07-30"
GROUP BY canchafk
看起来您的查询已损坏。在heidi / sql程序中选择并在那里修复它。
如此:
SELECT c.nombre,
c.idcomplejo,
t.canchafk,
Count(*) AS cantidadturnos
FROM turno t
INNER JOIN usuario u ON u.idusuario = t.usuariofk
INNER JOIN cancha ca ON t.canchafk = ca.idcancha
INNER JOIN complejo c ON c.idcomplejo = ca.complejofk
INNER JOIN ciudad cc ON cc.idciudad=c.ciudadfk
WHERE u.escomplejo=0
AND cc.paisfk="1"
AND u.paisfk="1"
AND noasistio=0
AND fecha BETWEEN "2016-07-01" AND "2016-07-30"
GROUP BY canchafk
看起来很多联盟都没有ON条款。