HJ
Oracle - Load Criteria - Não trás resultado
Boa noite pessoal,
Estava eu fazendo a configuração para minha aplicação funcionar com Oracle. Depois de muita cabeçada eu consegui habilitar o funcionamento.
Porém, ao clicar em alguma "Control"(CcustList.class.php), percebi que nenhuma informação era carregada.
Colocando um print_r na variável, tenho o seguinte resultado:
Resultado:
Array ( [0] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [1] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [2] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [3] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [4] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [5] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [6] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [7] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [8] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [9] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) )
Porém, caso eu faça um comando a parte do framework, o resultado é obtido, conforme abaixo:
Resultado:
Array ( [0] => Array ( [CODIGO] => 10151 [0] => 10151 [DESCRICAO] => DIRETORIA [1] => DIRETORIA [TPOCC_COD] => 00 [2] => 00 ) [1] => Array ( [CODIGO] => 10152 [0] => 10152 [DESCRICAO] => JURIDICO [1] => JURIDICO [TPOCC_COD] => 00 [2] => 00 )
Alguém já passou por isso? No Mysql a aplicação estava funcionando perfeitamente.
Obrigado e no aguardo.
Estava eu fazendo a configuração para minha aplicação funcionar com Oracle. Depois de muita cabeçada eu consegui habilitar o funcionamento.
Porém, ao clicar em alguma "Control"(CcustList.class.php), percebi que nenhuma informação era carregada.
Colocando um print_r na variável, tenho o seguinte resultado:
- <?php
- $repository = new TRepository('Ccust');
- $limit = 10;
- // creates a criteria
- $criteria = new TCriteria;
-
- // default order
- if (empty($param['order']))
- {
- $param['order'] = 'codigo';
- $param['direction'] = 'asc';
- }
- $criteria->setProperties($param); // order, offset
- $criteria->setProperty('limit', $limit);
- ...
- // load the objects according to criteria
- $objects = $repository->load($criteria, FALSE);
- print_r($objects);
- ?>
Resultado:
Array ( [0] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [1] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [2] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [3] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [4] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [5] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [6] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [7] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [8] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) [9] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) )
Porém, caso eu faça um comando a parte do framework, o resultado é obtido, conforme abaixo:
- <?php
- $stmt = $con->prepare($sql);
- $stmt->execute();
- $results = $stmt->fetchAll();
- print_r($results);
- ?>
Resultado:
Array ( [0] => Array ( [CODIGO] => 10151 [0] => 10151 [DESCRICAO] => DIRETORIA [1] => DIRETORIA [TPOCC_COD] => 00 [2] => 00 ) [1] => Array ( [CODIGO] => 10152 [0] => 10152 [DESCRICAO] => JURIDICO [1] => JURIDICO [TPOCC_COD] => 00 [2] => 00 )
Alguém já passou por isso? No Mysql a aplicação estava funcionando perfeitamente.
Obrigado e no aguardo.
Acrescentando, abaixo o resultado da mesma execução acima, só que na base MYSQL:
Resultado:
Array ( [0] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => Array ( [codigo] => 001001 [descricao] => Adminstração [tpocc_cod] => 01 ) [vdata:protected] => [attributes:protected] => Array ( [0] => descricao [1] => tpocc_cod ) ) )
Pessoal, descobri que é por causa do case. O Oracle parece funcionar apenas com a referente aos campos em MAIÚSCULO.
O problema é que TODAS as minhas models estão em minusculo. Vejam abaixo:
Ao alterar para MAIÚSCULO os campos da tabela, o print_r que coloquei apenas para debugar o problema começa a trazer informações, vejam:
Resultado após a alteração acima no model CCUST.:
Array ( [0] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => Array ( [CODIGO] => 10151 [DESCRICAO] => DIRETORIA [TPOCC_COD] => 00 ) [vdata:protected] => [attributes:protected] => Array ( [0] => DESCRICAO [1] => TPOCC_COD ) ) [1] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => Array ( [CODIGO] => 10152 [DESCRICAO] => JURIDICO [TPOCC_COD] => 00 ) [vdata:protected] => [attributes:protected] => Array ( [0] => DESCRICAO [1] => TPOCC_COD ) ) [2] => Ccust Object ( [tpocc:Ccust:private] => [data:protected] => Array ( [CODIGO] => 10153 [DESCRICAO] => PESSOAL [TPOCC_COD] => 00 )
Ou seja, o conteúdo existente na tabela começou a ser listado.
Terei mesmo então que alterar TODOS OS MEUS MODELS?
Porém o problema não se finalizou por ai. Apesar de o meu "print_r" estar listado o conteúdo da tabela, meu GRIDVIEW continua não listando NADA.
Sabem a solução para este problema?
Agradeço muito quem puder me ajudar, pois estou já com o projeto atrasado.
Abraços
Para ajudar alguém que passe pelo mesmo, a solução foi refazer os models, lists e forms, desta vez, sempre se referenciando ao nome dos campos em MAIUSCULO. Não sei se foi a melhor das soluções, já que terei muito trabalho alterando todos os já criados(que não são poucos). Porém foi a solução que encontrei e funcionou.
Exemplo:
Uma solução para esta situação é adicionar a linha
Olá,
Estou tendo um problema semelhante.
Ao usar o metodo $repository->load(), o dados dos atributos retornados estão vazios nos atributos do objeto:
Array ( [0] => TbLocais Object ( [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => ATIVO [1] => DESCLOCAL ) ) [1] => TbLocais Object ( [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => ATIVO [1] => DESCLOCAL ) ) [2] => TbLocais Object ( [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => ATIVO [1] => DESCLOCAL ) ) )
classe TRecord Tb
Metodo onReload na Classe de Controle TbLocaisList.class.php :
Estou usando Oracle 11g com o drive PDO.
Podem me ajudar?
Colocando o codigo do Metodo onReload na Classe de Controle TbLocaisList.class.php :
Adicione
Exemplo:
host = localhost
port = 1521
name = XE
user = testes
pass = testes
type = oracle
char = WE8ISO8859P1
slog =
prep = "1"
flow = "1"
date = "DD-MON-YYYY"
time = "DD-MON-YYYY HH:MI:SS"
nsep = ',.'
Obrigado pela ajuda Davy, este parametro eu ja tinha definido como '1', desde do inicio da configuração. Adicionei o 'prep', porém não funcionou.
Ficou assim o arquivo ini:
host = "XXXXXXX"
port = "1521"
name = "XXXXX"
user = "XXXXX"
pass = "XXXXX"
type = "oracle"
char = "AL32UTF8"
prep = "1"
flow = "1"
date = "YYYY-MM-DD"
time = "YYYY-MM-DD HH:MI:SS.FF"
nsep = ",."
Quando o usei o metodo para uma query manual, os resultados foram retornados:
Query Manual:
Array ( [0] => Array ( [idloc] => 3 [0] => 3 [ativo] => 0 [1] => 0 [desclocal] => LOJA 03 [2] => LOJA 03 ) [1] => Array ( [idloc] => 2 [0] => 2 [ativo] => 1 [1] => 1 [desclocal] => LOJA 02 [2] => LOJA 02 ) [2] => Array ( [idloc] => 1 [0] => 1 [ativo] => 1 [1] => 1 [desclocal] => LOJA 01 [2] => LOJA 01 ) )
Query do Load da classe TRecord:
Array ( [0] => TbLocais Object ( [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => ATIVO [1] => DESCLOCAL ) ) [1] => TbLocais Object ( [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => ATIVO [1] => DESCLOCAL ) ) [2] => TbLocais Object ( [data:protected] => [vdata:protected] => [attributes:protected] => Array ( [0] => ATIVO [1] => DESCLOCAL ) ) )
Consegui resolver.
No meu caso, tive que colocar todos os atributos das Classes Model, Form e List como minusculo, mesmo que no Oracle estejam como maiúsculo.
Que que coisa não!
:)
Obrigado pela ajuda Davy.
Eu até ia comentar isso agora, olhei nas minhas classes e os nomes do atributos estão em minusculo mesmo.