Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Duardaum

[Resolvido] Fazer SELECT dentro de um INSERT do Model estendido d

Recommended Posts

Olá pessoal,

 

É que eu to querendo fazer um INSERT em uma tabela e um dos valores tem que ser feito um SELECT

em uma tabela do banco.

 

Só que quando eu coloco o valor do campo 'SELECT NEXTVAL('seq_xxx')' (NEXTVAL comando do postgres)

não executa no banco, mais quando é direto no banco via phpPgAdmin vai de boa:

 

Exemplo:

$INSERT = array(
'codtabela' => (SELECT NEXTVAL('seq_xxx') LIMIT 1)
);

$objTabela = new Tabela();

$objTabela->insert($INSERT);

Mensagem de erro:

Erro ao fazer solicitação: SQLSTATE[22P02]: Invalid text representation: 7 ERRO: sintaxe de entrada é inválida para integer: "SELECT NEXTVAL('seq_tabela')"

Alguem sabe como faço esse SELECT????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode colocar como resolvido que conseguir achar a solução aqui também.

 

Então, vou compartinhar a solução com todo mundo aqui tbm.

 

Problema:

* Tinha um problema que era fazer um SELECT dentro de um INSERT no zend pois tinha um campo que

seu valor teria que ser capturado em outra tabela dentro do banco ex:

$INSERT = array(
'campo01' => "SELECT NEXTVAL('seq_tabela')",
'campo02' => '10'
);

$objTabela = new Tabela();
$objTabela->insert($INSERT);
Quando eu submetia os dados desta forma, dava erro:

Erro ao fazer solicitação: SQLSTATE[22P02]: Invalid text representation: 7 ERRO: sintaxe de entrada é inválida para integer: "SELECT NEXTVAL('seq_tabela')"

Bom,

 

Olhando a documentação do ZendFrameWork, descobrir que existe uma classe chamada Zend_Db_Expr,

que é uma classe que serve basicamente para você poder usar funções padrão do seu banco de dados na hora de um INSERT, DELETE, UPDATE ou SELECT

 

Exemplo de uso da Classe:

 

Fazer insert na tabela01 inserindo o dia e a hora do insert usando a função CURRENT_DATE() e CURRENT_TIME() do PostgreSql por exemplo:

$INSERT = array(
'dia' => new Zend_Db_Expr("CURRENT_DATE()"),
'hora' => new Zend_Db_Expr("CURRENT_TIME()")
)

$objTabela = new Tabela01();
$objTabela->insert($INSERT);

Simples não?!?!?!?

 

Espero poder ter ajudado.

 

Grato por tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.