在学说中返回多个列

时间:2016-03-22 12:38:40

标签: php symfony orm doctrine-orm doctrine

我想返回一个对象数组和一个计数,但以下代码返回错误。为什么呢?

Class ProdutoController

public static function listarTableDezMaisVendidos(){
    $retorno = "<table border='1' class='table-striped '>"
            . "<tr><th>Cod.</th>"
            . "<th>Nome</th>"
            . "<th>Quantidade de Vendas</th>"
            . "<th>Preço de Custo</th>"
            . "<th>Preço de Venda</th>"
            . "<th>Quantidade em estoque</th>"
            . "<th></th>"
            . "<th></th></tr>";

            $retorno = daogenerico::listarDezMaisVendidos();
            $itens = $retorno[0];
            $quantidades = $retorno[1];

    for($i=0; $i<count($itens); $i++){
        $item = $itens[$i];
        $retorno .= "<tr><td><form method='POST' action='cadproduto.php'>".$item->getProduto()->getId()."</td>"
                . "<td>".$item->getProduto()->getNome()."</td>"
                . "<td>".""."</td>"
                . "<td>".$item->getProduto()->getPrecodecusto()."</td>"
                . "<td>".$item->getProduto()->getPrecodevenda()."</td>"
                . "<td>".$item->getProduto()->getQuantidade()."</td>"
                . "<input type='hidden' name='id' value='".$item->getProduto()->getId()."'>"
                . "<input type='hidden' name='nome' value='".$item->getProduto()->getNome()."'>"
                . "<input type='hidden' name='descricao' value='".$item->getProduto()->getDescricao()."'>"
                . "<input type='hidden' name='precodecusto' value='".$item->getProduto()->getPrecodecusto()."'>"
                . "<input type='hidden' name='precodevenda' value='".$item->getProduto()->getPrecodevenda()."'>"
                . "<input type='hidden' name='quantidade' value='".$item->getProduto()->getQuantidade()."'>"
                . "<input type='hidden' name='quantidademinima' value='".$item->getProduto()->getQuantidademinima()."'>"
                . "<input type='hidden' name='opcao' value='editar'>"
                . "<td><button class='btn btn-default' type='submit'>Editar</button></td></form>"
                . "<td><a class='btn btn-default' href='".CONTROLE."postproduto.php?id=".$item->getProduto()->getId()."&AMP;opcao=excluir'>Excluir</a></td></tr>";
    }
    $retorno .= "</table>";
    return $retorno;
}

Class daogenerico

public static function listarDezMaisVendidos(){
    $bd = new bd();
    $bd->conectar();
    $result = $bd->getEntityManager()
    ->createQuery('SELECT i, count(p.id) AS ct FROM Item i JOIN i.produto p GROUP BY p ORDER BY ct DESC')
    ->setMaxResults(10)
    ->getResult();

    return $result; 
}

broswer错误:

  

注意:数组转换为字符串   C:\ xampp \ htdocs \ TrabalhoA2 \ controller \ ProdutoController.php上线   244

     

注意:未定义的偏移:1英寸   C:\ xampp \ htdocs \ TrabalhoA2 \ controller \ ProdutoController.php上线   228

     

致命错误:在null中调用成员函数getProduto()   C:\ xampp \ htdocs \ TrabalhoA2 \ controller \ ProdutoController.php上线   229

1 个答案:

答案 0 :(得分:0)

这里有几个错误:

  1. 您将$retorno声明为字符串($retorno = "<table>"...1),然后使用数组($retorno = daogenerico::listarDezMaisVendidos();)重新声明它,最后您尝试将字符串追加到数组($retorno .= }}这就是你得到Array to string conversion错误的原因。
  2. $retorno是一个数组。数组的每个元素都是一行数据库。所以做$itens = $retorno[0]然后$quantidades = $retorno[1];并没有做你的意思。 $itens现在是db的第一行,$quantidades是db的第二行。看起来您的查询只返回一行,这就是您获得Undefined offset: 1

  3. 的原因
  4. 您应该阅读有关将视图与业务逻辑分离的内容。例如here