Kohana PHP – ORM Conventions

No Kohana temos a facilidade de trabalhar com convenções em vez de configurações, isto dá agilidade e comodidade ao desenvolvedor que não precisa ficar configurando inúmeros arquivos de mapeamento de banco de dados para que sua aplicação funcione perfeitamente.

Porém, quando vamos trabalhar com databases que não seguem estas convenções (o que pra mim é algo muito comum) ou que já atendem a outros sistemas tambéme e não podem ser modificadas, temos de configurar somente as excessões para que tudo continue funcionando perfeitamente.

Algumas destas convenções, e suas excessões:

Nomes de tabelas no plural

Nomes de tabelas devem estar no plural. Por padrão o ORM obtém o nome da tabela e determina seu plural com ajuda do helper inflector.
Convenção: Ex: users, invoices.
Excessão: Declarar a propriedade table_name

protected $table_name = 'usuarios';

Models no singular

Enquanto pela convenção as tabelas no banco devem ter seu nome no plural, o nome do arquivo e do model deve ser no singular.
Convenção: NomedaTabela seguido de _Model

class User_Model extends ORM {}

Autoincrement

Toda tabela deve ter um campo autoincrement + primary key chamado id
Excessão: No model, declarar a propriedade primary_key

protected $primary_key = 'meucampoid';

Foreign Keys

Chaves estrangeiras devem ser nomeadas no banco de dados como nomeDoModel seguido de _id
Exemplo: invoice_id, user_id
Excessão: No exemplo abaixo, a tabela invoices esteja relacionada a users, porém na tabela invoices a chave estrangeira chame-se user_fk (que não segue o padrão sugerido)

Relacionamento entre Users e Invoices

Relacionamento entre Users e Invoices

No model Invoice_Model, declare a propriedade foreign_key

class Invoice_Model extends ORM {
    protected $foreign_key = array('user' => 'user_fk');
}

Tabelas Pivôs

Tabelas pivôs devem ser nomeadas pelos nomes das tabelas pais na ordem alfabética (legal e organizado não?), nesta forma tabela1_tabela2. Vamos usar como exemplo o relacionamento de muitos-para-muitos entre a tabela users e as tabelas de functions, tabela de junção deve ser nomeada no banco como functions_users

Simples, não? É Kohana!
E é por isso que eu gosto.

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

No comments yet

Leave a Reply





XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>