Definir Collation e Charset para todas as tabelasHá 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: true
No exemplo seguinte, a tabela
Entity relaciona com a tabela
Category através do campo
category_id:
Category:
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) }
Como o campo
category_id tem o mesmo nome da tabela
Category, o relacionamento é automaticamente detectado.
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
BehaviorsTimestampable - 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:
actAs: { Timestampable: ~ }
columns:
...
Sluggable - gera automaticamete campo slug
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