Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Incluir mais de 1 condição na atualização de objeto. ...
HT
Incluir mais de 1 condição na atualização de objeto.  
  1. <?php
  2. Alguém sabe informar como posso incluir mais condições em uma atualização de objeto?.
  3. Quando buscamos um objeto e queremos atualizá-lomudamos alguma informação e damos um store(). Isso faz com com que o sistema gere o sql com o where indicando o ID do objetoÉ neste wherequando rodar o "store()"que eu queria adicionar mais uma condição.
  4. Gerado
  5. UPDATE TABELA SET CAMPO '1'  WHERE (Num_Nota '11111')
  6. Como eu quero
  7. UPDATE TABELA SET CAMPO '1'  WHERE (Num_Nota '11111' AND Cod_Estabe 1)
  8. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (5)


RL

Oi Herbety, eu trabalharia com id da nota se possível, não com o número. Mesmo assim, você pode fazer a alteração com update direto no código:

Exemplo 1:
  1. <?php
  2.         try {
  3.             $valor '1';
  4.             $nota '11111';
  5.             $cod 1;
  6.             TTransaction::open('base');
  7.             $conn TTransaction::get();
  8.             $exec $conn->prepare"UPDATE TABELA SET CAMPO = " $valor " WHERE Num_Nota = '" $nota "'' AND Cod_Estabe = " $cod ";" );
  9.             $exec->execute();
  10.             TTransaction::close();
  11.             new TMessage('info''Tabela alterada com sucesso!');
  12.         } catch (Exception $e) {
  13.             new TMessage('error'$e->getMessage());
  14.             TTransaction::rollback();
  15.         }
  16. ?>


Exemplo 2:
  1. <?php
  2.         try {
  3.             $valor '1';
  4.             $nota '11111';
  5.             $cod 1;
  6.             TTransaction::open('base');
  7.             $conn TTransaction::get();
  8.             $exec $conn->prepare"UPDATE TABELA SET CAMPO = ? WHERE Num_Nota = '?'' AND Cod_Estabe = ?;" );
  9.             $exec->bindParam(1$revPDO::PARAM_STR);
  10.             $exec->bindParam('11111'$revPDO::PARAM_STR);
  11.             $exec->bindParam(1$revPDO::PARAM_INT);
  12.             $exec->execute();
  13.             TTransaction::close();
  14.             new TMessage('info''Tabela alterada com sucesso!');
  15.         } catch (Exception $e) {
  16.             new TMessage('error'$e->getMessage());
  17.             TTransaction::rollback();
  18.         }
  19. ?>


Espero ter ajudado.
RL

Desculpa, eu errei o código do segundo exemplo, mas acho que deu para pegar a ideia...
HT

Rodrigo Limão, deu sim. Mas era justamente o que eu não queria fazer manualmente. Pensei que teria uma forma manipulando diretamente o store() do objeto para evitar escrever o sql.
Mais agradeço sua ajuda.
NR

Isso vai contra o conceito principal do active record que é trabalhar sempre com um identificador único e exclusivo.

Além dos exemplos de conexão manual mencionados anteriormente, também tem as opções para update usando as classes do framework:
adianti.com.br/framework_files/tutor/index.php?class=CollectionBatch
adianti.com.br/framework_files/tutor/index.php?class=CollectionStati
HT

Nataniel Rabaioli, verdade, mas essa segunda opção já resolve a não escrever sql puro. Não tinha me atentado que existia essa possibilidade. Obrigado.