UpdateAll cakephp

Posted on by : admin Tags:

Como usar o UpdateAll do Cakephp versão 2.x

PRIMEIRA SITUAÇÃO
Para efetuar um update em várias linhas com um where como este update abaixo:

Exemplo SQL: update resposta set status = ‘0’ where cod_pergunta = $cod_pergunta;

Como eu faria isto em cakephp:
$this->Resposta->updateAll(
array(‘Resposta.status’ => ‘0’),
array(‘Resposta.cod_pergunta’ => $cod_pergunta)
);

O primeiro array são as alterações que quer fazer, e o segundo array são os filtros “where” para as alterações.

 

SEGUNDA SITUAÇÃO
O cakephp liga todas as tabelas de acordo com a sua model, então imagine que temos duas tabelas chamadas: pergunta e resposta.

As duas estão ligadas, todas as respostas terão o código da pergunta.
Quando dou um find, automaticamente vem as duas, e quando eu dou um updateAll ele também monta a query buscando tudo.
Desta maneira, podemos fazer atualizações simultâneas em duas tabelas como o exemplo abaixo:

$this->Resposta->updateAll(
array(‘Resposta.status’ => ‘0’, ‘Pergunta.status’ => ‘0’),
array(‘Resposta.cod_pergunta’ => $cod_pergunta)
);

Desta maneira estou alterando o status da tabela de resposta e de pergunta com where do cod_pergunta da resposta.

 

Show né…