Cakephp 3.x用我的自定义查询向我显示空行

时间:2016-08-07 22:07:33

标签: php cakephp cakephp-3.0 cakephp-3.x

我在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>

感谢您的帮助!

1 个答案:

答案 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条款。