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é…