Basicamente, a classe Model nos fornece dois métodos para salvar e um para atualizar, são eles, save(), saveAll() e updateAll(). Vamos ver cada um deles agora.

O método save()

Esse método recebe um array com os valores que devem ser salvos no seguinte formato: array[‘Model’] [‘campo’]. Dessa forma quando chamarmos um método save() de um model dentro do controle ele saberá exatamente o que fazer.

Caso você esteja usando o FormHelper na sua View seguindo as normas do Cake, o post será enviado já no padrão de ser inserido no banco pelo método save().

O save() recebe dois argumentos ambos com o padrão nulo, Model::save($data = null, $params = array()).

Vejamos agora um exemplo simples.

Listagem 1: O método save().


//na classe PessoaController
  /*a variável $data recebe o array do post que fica armazenado no array data de requeste */
  $data = $this->request->data;
  /*$data estará no formato $data[‘Pessoa’][‘nome’],$data[‘Pessoa’][‘idade’] */
  $this->Pessoa->save($data);

No exemplo acima fizemos o que é de mais comum, podemos especificar um pouco mais usando o segundo parâmetro que tem as seguinte posições:

  • validate: um valor booleano que habilita e desabilita a validação.
  • filedList: um array com os campos que você quer salvar, o padrão é todos os campos.
  • callbacks: false para desabilitar, ‘berfore’ ou ‘after’ para permitir apenas este.

O método saveAll()

Esse método faz praticamente a mesma coisa que o método save(), a única diferença é que caso estejamos passando um campo de um model diferente do chamado mas que sejam relacionados, então o Cake criará um outro registro e o relacionamento entre os dois.

Listagem 2: O método saveAll().


//na classe PessoaController
  /*a variável $data recebe o array do post que fica armazenado no array data de requeste */
   $data = $this->request->data;
  /*$data estará no formato $data[‘Pessoa’][‘nome’],$data[‘Pessoa’][‘idade’],$data[‘Grupo’][‘nome’] */
  $this->Pessoa->saveAll($data);
  /*Será criado uma nova pessoa e um novo grupo*/

Ah! Quase me esqueci de dizer que tanto no save quanto no saveAll, quando o campo da chave primaria vem no post, o Model tentará atualizar o registro.

O método updateAll()

Usamos para atualizar campos de um registro. Seu uso é bastante simples, contem dois arrays, um com os campos e valores e o outro com as condições: Model::updateAll($data = array(),$conditions = array()).

Listagem 3: O método updateAll().


$this->Pessoa->updateAll(
 array('Pessoa.nome' => "Allan"),
 array('Pessoa. id' => 1)
);

Busquei, neste artigo, explicar os métodos de persistência das informações no banco de dados utilizados no framework CakePHP. Espero que tenham gostado. Até o próximo artigo.