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:

PHP:
  1. $dados = array("Usuario"=>
  2. "id"=>1,
  3. "nome"=>"Tulio Faria"
  4. )
  5. );
  6.  
  7. $this->Usuario->set($dados);
  8. $this->Usuario->save();

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.

PHP:
  1. $this->Usuario->id = 1;
  2. $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,

7 Comentários »

  1. 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

  2. Alex Felix said,

    Janeiro 9, 2008 @ 23:57

    So uma duvida, este "&gt" 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.

  3. Tulio Faria said,

    Janeiro 10, 2008 @ 00:16

    Opa, denada... :) é sempre bom receber idéias para novos posts.

    esse &gt é pau mesmo, vou arrumar...

    falowpa

  4. Bill said,

    Janeiro 10, 2008 @ 14:05

    Boa Tulio, sempre com suas dicas pra ajudar a galera!

  5. 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

  6. 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.

  7. 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,

RSS feed for comments on this post · URI do TrackBack

Deixe seu comentário