CakePhp
- 04/10/2008
CakePhp – Como utilizar tabela com nome fora do padrão
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:
-
<?
-
class Opcao extends AppModel {
-
var $name = "Opcao";
-
var $useTable = "opcoes";
-
}
-
?>
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!



9 Comentários to “CakePhp – Como utilizar tabela com nome fora do padrão”
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
Por Vinícius Krolow (2 comments) em 05/10/2008
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!
Por Marcelo Sabadini (101 comments) em 05/10/2008
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
Por Vinícius Krolow (2 comments) em 06/10/2008
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.
Por Fabio M. Costa (4 comments) em 08/10/2008
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!
Por Diego Gomes (10 comments) em 16/10/2008
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!
Por Marcelo Sabadini (101 comments) em 16/10/2008
arrumou nada! aacabou de escrever ceke no comentário acima! é Cake! hehehehe
abraçao! otimo trabalho!
Por Diego Gomes (10 comments) em 20/10/2008
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
Por Davi Koslosky (1 comments) em 16/03/2009
Ola Davi tudo bom?
Kra.. fico muito feliz com sua contribuição!!!
Um grande abraço!!!
Por Marcelo Sabadini (101 comments) em 17/03/2009