SF
Dúvida sobre foreach em onReload
Fechado
Srs , por que o comando foreach em minhas rotinas mostram sempre itens em dobro?
No código mais abaixo a linha :
$this->datagrid->addItem( $object );
acrescenta corretamente o registro na grid
Mas se eu trocar por :
print $object->sic_emp->des;
Ele printa o dobro de respostas, pois o array está em dobro
O que acontece?
No código mais abaixo a linha :
$this->datagrid->addItem( $object );
acrescenta corretamente o registro na grid
Mas se eu trocar por :
print $object->sic_emp->des;
Ele printa o dobro de respostas, pois o array está em dobro
O que acontece?
- <?php
- TTransaction::open('sic');
- $repository = new TRepository('SicOpe');
- $criteria = new TCriteria;
- $login_id = TSession::getValue('login_id');
- $logged = TSession::getValue('logged');
- $login_nome = TSession::getValue('login_nome');
- $login_id_adm = TSession::getValue('login_id_adm');
- $criteria->add(new TFilter('id_lgn', '=', $login_id));
- $criteria->add(new TFilter('id_adm', '=', $login_id_adm));
- $objects = $repository->load( $criteria );
- $this->datagrid->clear();
- if ($objects)
- {
- foreach ($objects as $object)
- {
- $this->datagrid->addItem( $object );
- //print $object->sic_emp->des;
- }
- }
- ?>
use o var_dump($object); antes do foreach (laço) para conferir seu array.
Usei, ele mostra o mesmo array duas vezes. Por que ?
Dentro do onReload() ?
Primeiro e para ficar mais claro, você deve usar os operadores do TCriteria:
TExpression::OR_OPERATOR
TExpression::AND_OPERATOR
Verifique também se os dados não estão duplicado no banco de dados.
Não estão duplicados, e usando o add para adicionar o registro a grid funciona blz, mas se eu for ler sando o "print" ele imprime das vezes.
Veja se o show(), tem esse controle: