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.