CakePhp – Como utilizar tabela com nome fora do padrão


1 Estrelas2 Estrelas3 Estrelas4 Estrelas5 Estrelas (5 votos, média: 5.00 de 5)
Loading ... Loading ...

Bom, todo mundo sabe que para criar um controlador no Cakephp você precisa criar a tabela no banco de dados com o nome no plural. Isso é muito fácil, mas, ja me deparei com um controlador que se chama ‘opcao‘… logo, o Cake espera que o nome seja ‘opcoes‘ certo?                   Errado!  o ‘dicionario’ do Ceke Cake é inglês, então teria que colocar o nome da tabela como ‘opcaos‘.

Outra situação que pode acontecer é você pegar um site/sistema pra reprogramar com o Ceke Cakemas não pode perder os dados do banco de dados… Muitas vezes o banco de addos já está estruturado e fora do padrão de nomes que o Cake espera.

Para isso, existe uma solução muito simples. Utilizaremos o atributo $useTable e colocaremos o nome da tabela. Veja o exemplo abaixo:

  1. <?
  2. class Opcao extends AppModel {
  3.     var $name = "Opcao";
  4.     var $useTable = "opcoes";
  5. }
  6. ?>

Prontinho, fazendo isto, o problema que tive foi resolvido. Caso a chave primária da tabela seja diferente de ‘id’, utilize o atributo $primaryKey, colocando o nome do campo.

Espero ter ajudado, abraços!

  1. 9 Comentários to “CakePhp – Como utilizar tabela com nome fora do padrão”

  2. para nesses casos, de utilizações de tabelas em outros idiomas fora o inglês temos também os inflections

    http://book.cakephp.org/view/47/Custom-Inflections

    Seta-se assim as regras do plural no idioma que está sendo desenvolvido sem ter a necessidade de indicar qual tabela o modelo vai utilizar

    ReplyReply

    Por Vinícius Krolow (2 comments) em 05/10/2008

  3. Vinícius Krolow, muito bem lembrado. Eu nunca utilizei inflections. Vc ja utilizou? caso sim, se quiser pode me mandar um POST eu eu publico aqui com seus dados.

    Mas esta dica eh mto valida pro caso de desenvolver um sistema que o banco de dados ja está desenhado.

    Obrigado pela sua contribuição kra…

    Um grande abraço!

    ReplyReply

    Por Marcelo Sabadini (101 comments) em 05/10/2008

  4. sim já utilizei e é bem simples, é só definir os padrões da linguagem no arquivo de inflections. Aqui temos um arquivo já preparado para o uso:

    http://manual.cakephp.com.br/doku.php?id=inflections_portugues

    ReplyReply

    Por Vinícius Krolow (2 comments) em 06/10/2008

  5. O que nos fazemos nos nossos projetos é modificar o inflections tambem. Mas não sabia da existencia desse inflections em portugues, Obrigado!
    Nós faziamos os nossos plurais de acordo com as nossas necessidades, lá no inflections.

    ReplyReply

    Por Fabio M. Costa (4 comments) em 08/10/2008

  6. 2 coisas! qdo começa o mini curso de cake?

    outra coisa, corrije lá depois pq sem querer vc digitou ceke inves de cake no post.

    abraço!

    ReplyReply

    Por Diego Gomes (10 comments) em 16/10/2008

  7. Grande Diego!!

    Faz tempo q nao aparece por aqui no blog heheheh

    Bom, o mini curso de Ceke ja está nos planos.. mas infelizmente estou meio sem tempo :-(

    kra.. valeu o toque ai das palavras erradas! arrumei agora mesmo…

    Abração casca!

    ReplyReply

    Por Marcelo Sabadini (101 comments) em 16/10/2008

  8. arrumou nada! aacabou de escrever ceke no comentário acima! é Cake! hehehehe
    abraçao! otimo trabalho!

    ReplyReply

    Por Diego Gomes (10 comments) em 20/10/2008

  9. Olá, cheguei aqui, procurando sobre tabelas no plural em português no CakePHP.
    Achei muito útil e satisfatório o arquivo postado no link do Vinícius.
    Porém, encontrei uns probleminhas, com relação a tabelas que terminam em oes->(ao).
    Percebi que o regex estava dando preferência, e casando com palavras que terminam com “o” simplesmente.
    Depois de muito testar, achei o problema e gostaria de compartilhar com o pessoal aqui:
    Bem no começo do array $singularRules.
    troquei: ‘/^([a-zA-Z]*)es$/i’ => ‘\1e’,
    Por:’/^([a-zA-Z]*[^oa])es$/i’ => ‘\1e’,

    e também
    troquei: ‘/^([a-zA-Z]*)os$/i’ => ‘\1o’,
    por: ‘/^([a-zA-Z]*[^a])os$/i’ => ‘\1o’,

    Desse jeito, as tabelas terminadas em oes, foram corretamente mudadas para ao, por exemplo, no meu caso:
    Funcoes => Funcao

    Ainda farei mais teste e se tiver mais algum detalhes, volto aqui!

    Abraço a todos

    ReplyReply

    Por Davi Koslosky (1 comments) em 16/03/2009

  10. Ola Davi tudo bom?

    Kra.. fico muito feliz com sua contribuição!!!

    Um grande abraço!!!

    ReplyReply

    Por Marcelo Sabadini (101 comments) em 17/03/2009

Coloque um Comentário

Links de comentários deveriam estar livres de nofollow.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes