Table prefix

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…

Valeu!!!

:)

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.

okay?!

Obrigado pela resposta, mas acho que não fui muito claro.

Em suma, minha dúvida é:

Se eu tenho todo o sistema com um prefixo e quero modificar, tenho de renomear as tabelas do banco de dados e gerar os models novamente?

Porque os models geralmente tem códigos adicionais que a gente escreve e ficar gerando tudo de novo é uma perda de tempo enorme.

Grato

I can read portuguess but my writing is horrible.

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

thanks a lot!

the activeRecord tableName() is like




	/**

	 * @return string the associated database table name

	 */

	public function tableName()

	{

		return '{{user}}';

	}



so the brackets make the diference not only in SQL statements but also in the function

regards!!

:)