CakePHP 1.2 - Salvando registros
Olá pessoal,
atendendo a pedidos e aproveitando que por se tratar de um assunto interessante, vou falar sobre a inserção e atualização de dados no CakePHP 1.2.
A primeira mudança que encontramos é a inclusão do método set para o model, assim antes de salvarmos, validarmos e etc, devemos definir os dados usando o mesmo.
Como todos sabem o Cake usa um único método para criar e atualizar registros (o método save). Mas como diferenciar um do outro? Com o ID
Se nos dados passados (setados) houver o id, será efetuado um update, senão um insert. Simples, não?
Exemplo:
Como em $dados tem o id (chave primária), neste caso, seria feito um update setando o nome para "Tulio Faria" do Usuario de id = 1.
Para fazermos o insert, bastaria tirar o id de dados.
Para atualizar um único campo, podemos usar um outro método, o saveField.
-
$this->Usuario->id = 1;
-
$this->Usuario->saveField("nome", "Tulio Faria");
Neste caso, faria o mesmo efeito do exemplo do save, atualizando o nome para "Tulio Faria" para o Usuario de id = 1.
Bom é isso pessoal, qualquer dúvida comentem!
Abraços,

Alex Felix said,
Janeiro 9, 2008 @ 23:51
Tulio, cara não tem palavras para agradecer, Brother. Bom so posso dizer que se precisar de algo cara; é só dizer. Valeu d++++ mesmo
Alex Felix said,
Janeiro 9, 2008 @ 23:57
So uma duvida, este ">" eu ainda não tinha visto, não entendi muito bem o que é ? Mas Valeu ja consegui fazer o que eu precisava aqui; qualquer coisa chamo o Super Tulio novamente. Valeu mesmo.
Tulio Faria said,
Janeiro 10, 2008 @ 00:16
Opa, denada...
é sempre bom receber idéias para novos posts.
esse > é pau mesmo, vou arrumar...
falowpa
Bill said,
Janeiro 10, 2008 @ 14:05
Boa Tulio, sempre com suas dicas pra ajudar a galera!
Tiago Barrionuevo said,
Janeiro 11, 2008 @ 00:13
Hum... Estou fazendo um scaffolding de uma tabela onde os IDs são setados por uma sequence (generator do Firebird) através de uma trigger no banco e está dando erro de conversão no campo ID! O correto seria o SQL não passar o campo ID na lista de campos do select neste caso. Será que existe um modo de contornar isso (com ou sem o scaffold)?
Nr Query Error Affected Num. rows Took (ms)
1 INSERT INTO "CARGOS" ("ID","NOME","FLG_EXP","MODIFIED","CREATED") VALUES ('','yyyyy','I','11.01.2008 02:08:01','11.01.2008 02:08:01') conversion error from string "" 4
Tiago Barrionuevo said,
Janeiro 14, 2008 @ 21:49
OK... Ninguem teve nenhum comentário a fazer?
Tudo bem, mas só para constar, este problema com os campos ID é um bug do Cake, ticket #3854, e parece que já foi resolvido.
Abraços.
Tulio Faria said,
Janeiro 15, 2008 @ 00:39
Tiago,
infelizmente eu também não sabia te responder...
Mas bom saber que já foi solucionado.
Abraços,