Caros amigos, por favor, se alguém puder me esclarecer este ponto…é algo que fica meio obscuro para mim na documentação.
O table_prefix serve para quando queremos usar prefixo nas tabelas do banco de dados, certo? Certo.
O table_prefix faz com que nossas consultas escritas com {{nome}} substitua no comando por prefixo_nome.
Agora me diga o seguinte…supondo que eu tenho um sistema pronto com as tabelas no banco de dados todas nomeadas com um determinado prefixo digamos "prf1" e tenho todos os models gerados na aplicação.
Obviamente os models estarão apontando para prf1_User, prf1_Guestbook etc
Agora vou utilizar a mesma aplicação em outro banco de dados, mas preciso modificar o prefixo para prf2
Vou ter de renomear todas as tabelas do meu banco de dados e gerar novamente todos os módulos?
Se for isso, para que então serve o table_prefix? Somente para as consultas SQL que eu escrevo???
Não sei se fui claro, mas depois de quase dois anos usando Yii isso é uma coisa que ainda me deixa com a pulga atrás da orelha…
Desculpe se estiver sendo precipitado (na resposta) mas segundo entendo o table_prefix é util quando o usamos. Ou seja, se sua aplicação não faz uso do table_prefix, e agora vc precisa utilizar, sem dúvida vai ter de adequar o código. Se já estivesse utilizando simplesmente ia mudar o prefix.
It doenst matter how you name your models… as long as their tableName() return the appropriate table name. Let me explain… The tableName function is what tells Yii where to extract the attributes from. When surrounding the name of the table with brakets, Yii will check for ‘tablePrefix’ if there is no tablePrefix, it will just return what is within brackets.
So, you have a system with tables named ‘tbl_’, then set the tablePrefix of your ‘db’ component (main.php), if no prefixes… then get rid of that setting and voilá… Yii is great