【问题标题】:Cakephp 3.x show me empty row with my custom queryCakephp 3.x 用我的自定义查询显示空行
【发布时间】:2016-08-07 22:07:32
【问题描述】:

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

谢谢你帮助我!

【问题讨论】:

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


    【解决方案1】:

    其他人阅读的固定查询格式:

    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 子句。

    【讨论】:

    • 您使用的 INNER 连接。每个表中都有数据吗?如果你不想要 LEFT 加入。最好在 SQL Studio 中分解查询,一次删除每个连接,直到您获得数据以找到问题所在。蛋糕代码看起来很适合查询执行。我不确定视图语法。
    • 是的,我在每个表中都有数据。同样在 phpmyadmin 中,相同的查询显示 mit 19 行,每列中有数据。但是在 cakephp 中,行是空的
    • 您已经在脚本前面建立了到该数据库的连接,并且用户对这些表具有选择权限?如果您在控制器中使用 var_dump($turnostotales) 也会发生什么。你有没有确认它什么都没有。还要检查 php 错误日志是否有问题。
    • $Kngsy var_dump 返回如下数据列表: { ["nombre"]=> string(13) "El Pasillo F5" ["idcomplejo"]=> string(2) "13" ["canchafk"]=> 字符串(2) "19" ["cantidadturnos"]=> 字符串(1) "7" }
    • 我不是 cakephp 专家,但您设置的值不是数组而不是对象吗?所以不是 = h($turnostotale->idComplejo) ?> 而是 = $turnostotale['idComplejo'] ?>?
    猜你喜欢
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多