20.11.2014 Views

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Embora nunca tenhamos declara<strong>do</strong> uma propriedade title na classe Post, ainda assim<br />

podemos acessa-la no exemplo acima. Isso acontece porque title é uma coluna da tabela<br />

Post, e a classe CActiveRecord a deixa acessível por meio de uma propriedade com a<br />

ajuda <strong>do</strong> méto<strong>do</strong> mágico __get(), <strong>do</strong> PHP. Ao tentar acessar uma coluna que não existe<br />

na tabela será disparada uma exceção.<br />

Informação: Nesse guia, nomeamos as colunas utilizan<strong>do</strong> o estilo camel case (por<br />

exemplo, createTime). Isso acontece porque acessamos essas colunas através de<br />

propriedades de objetos que também utilizam esse estilo para nomeá-las. Embora a<br />

utilização de camel case faça nosso código ter uma nomenclatura mais consistente,<br />

ele adiciona um problema relaciona<strong>do</strong> aos bancos de da<strong>do</strong>s que diferenciam letras<br />

maiúsculas de minúsculas. Por exemplo, o PostgreSQL, por padrão, não faz essa<br />

diferenciação nos nomes das colunas, e devemos colocar o nome da coluna entre<br />

aspas, em uma consulta, se seu nome conter letras maiúsculas e minúsculas. Por<br />

isso, é uma boa idéia nomear as colunas (e as tabelas também) somente com letras<br />

minúsculas (por exemplo, create_time) para evitar esse tipo de problema.<br />

Crian<strong>do</strong> um Registro<br />

Para inserir um novo registro em uma tabela, criamos uma nova instância da classe AR<br />

correspondente, inserimos os valores nas propriedades relacionadas as colunas da tabela<br />

e, então, utilizamos o méto<strong>do</strong> save() para concluir a inserção.<br />

$post=new Post;<br />

$post->title='post de exemplo';<br />

$post->content='conteú<strong>do</strong> <strong>do</strong> post de exemplo';<br />

$post->createTime=time();<br />

$post->save();<br />

Se a chave primário da tabela é auto-numérica, após a inserção, a instância da classe AR<br />

irá conter o valor atualiza<strong>do</strong> da chave primária. No exemplo acima, a propriedade id irá<br />

refletir o valor da chave primária no novo post inseri<strong>do</strong>, mesmo que não a tenhamos<br />

altera<strong>do</strong> explicitamente.<br />

Se alguma coluna é definida com um valor padrão estático (por exemplo, uma string ou<br />

um número) no schema da tabela, a propriedade correspondente na instância AR terá,<br />

automaticamente, este valor, assim que criada. Uma maneira de alterar esse valor padrão<br />

é declarar explicitamente a propriedade na classe AR:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!