我想返回一个对象数组和一个计数,但以下代码返回错误。为什么呢?
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()."&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
答案 0 :(得分:0)
这里有几个错误:
$retorno
声明为字符串($retorno = "<table>"...1
),然后使用数组($retorno = daogenerico::listarDezMaisVendidos();
)重新声明它,最后您尝试将字符串追加到数组($retorno .=
}}这就是你得到Array to string conversion
错误的原因。 $retorno
是一个数组。数组的每个元素都是一行数据库。所以做$itens = $retorno[0]
然后$quantidades = $retorno[1];
并没有做你的意思。 $itens
现在是db的第一行,$quantidades
是db的第二行。看起来您的查询只返回一行,这就是您获得Undefined offset: 1
您应该阅读有关将视图与业务逻辑分离的内容。例如here