Há determinadas definições de classes/tabelas que por vezes queremos generalizar. Uma delas é, concerteza, a collation e o charset das tabelas.
Para não termos que repetir todas essas definições em cada tabela basta colocar o seguinte no topo do ficheiro config/doctrine/schema.yml:
options:
collate: utf8_unicode_ci
charset: utf8
Relacionamentos automáticos entre tabelas
(Apenas para tabelas do tipo InnoDB)
Com Doctrine, é possivel relacionar automaticamente tabelas uma vez que através dos nomes das colunas é detectado se existe tabela associada a esse nome.
Para tal, basta definir o seguinte atributo no topo do ficheiro config/doctrine/schema.yml:
detect_relations: trueNo exemplo seguinte, a tabela Entity relaciona com a tabela Category através do campo category_id:
Category:Como o campo category_id tem o mesmo nome da tabela Category, o relacionamento é automaticamente detectado.
columns:
id: { type: integer(4), primary: true, autoincrement: true }
name: { type: string(255), notnull: true }
Entity:
columns:
id: { type: integer(4), primary: true, autoincrement: true }
name: { type: string(255), notnull: true }
category_id: { type: integer(4) }
Para ler mais sobre sintax abreviada em Doctrine sigam este link:
http://www.doctrine-project.org/documentation/manual/1_2/en/yaml-schema-files#abbreviated-syntax
Behaviors
Timestampable - gera automaticamente campos created_at e updated_at
Estes campos também são gerados automaticamente utilizando o atributo Timestampable na definição da classe. Assim, para gerarmos esses campos para a tabela Category:
Category:Sluggable - gera automaticamete campo slug
actAs: { Timestampable: ~ }
columns:
...
Com este behavior o campo slug é gerado automaticamente para um ou vários campos duma tabela. Quando o objecto é guardado, a respectiva slug user friendly é criada:
Glossary:
actAs:
Sluggable:
unique: true
fields: [word]
canUpdate: true
columns:
word: { type: string(255), notnull: true, unique: true }
...
Mais sobre behaviors:
http://www.doctrine-project.org/documentation/manual/1_2/en/behaviors
Nenhum comentário:
Postar um comentário