Don't you speak portuguese? Translate this site with Google Translator

Pensamento do Dia

Esquecer - se da morte e dos mortos é prestar um péssimo serviço à vida e aos vivos. (Philippe Ariès)

8 - Detalhes sobre Models

8 – Detalhes sobre Models

 

Nas adversidades, uns desistem, enquanto outros batem recordes.

Ayrton Senna

 

O Model representa a primeira letra do MVC.

Models (Modelos) são as classes que servem como camada de negócio na sua aplicação. Isso significa que eles devem ser responsáveis pela gestão de quase tudo o que acontece em relação a seus dados, sua validade, interações e evolução do fluxo de trabalho de informação no domínio do trabalho.

No CakePHP seu modelo de domínio da aplicação é dividido em 2 tipos de objetos principais. Os primeiros são repositories (repositórios) ou table objects (objetos de tabela). Estes objetos fornecem acesso a coleções de dados. Eles permitem a você salvar novos registros, modificar/deletar os que já existem, definir relacionamentos, e executar operações em massa. O segundo tipo de objetos são as entities (entidades). Entities representam registros individuais e permitem a você definir comportamento em nível de linha/registro e funcionalidades.

O ORM (MOR - Mapeamento Objeto-Relacional) nativo do CakePHP especializa-se em banco de dados relacionais, mas pode ser extendido para suportar fontes de dados alternativas.

O ORM do Cakephp toma emprestadas ideias e conceitos dos padrões ActiveRecord e Datamapper. Isso permite criar uma implementação híbrida que combina aspectos de ambos padrões para criar uma ORM rápida e simples de utilizar.

Objetos Table são usados para ser interface para coleções de objetos, ou seja, tabelas. O objeto Entity provê uma interface para um objeto individual, ou seja registros.

 

Atributos do Model

Indicar nome de configuração do database

public $useDbConfig = 'alternate';

 

Prefixo das Tabelas

public $tablePrefix = 'alternate_';

 

Nome do campo Primary Key

public $primaryKey = 'example_id';

 

Display field

Nomes de campos em tabelas para tabelas relacionadas

Convenção: title ou name

Se diferente indicar no model com:

public $displayField = 'nomedocampo';

 

Tabela Default

public $useTable = 'users';

Caso receba a mensagem:

Erro: Table useres for model User was not found in datasource default.

Isso aconteceu comigo sempre que instalei o o plugin Cakept_br.

 

Adicione a variável $use/Table contendo o nome da tabela ao model User

public $useTable = 'usuarios';

 

Método _setPassword() - este método cria um hash da senha do usuário antes que seja salva e antes que seja validada.

 

Lógica de negócios

A codificação mostrada abaixo, neste capítulo, sobre os models e o ORM, que é o padrão que o CakePHP usa para lidar com bancos de dados, é muito importante para codificar a lógica de negócios de muitos aplicativos. As operações de CRUD, que são as mais básicas, podemos criar usando o bake, mas a lógica específica de alguns aplicativos somos nós que precisaremos criar. Então devemos criá-la no model, para que esteja disponível nos controllers e possa ser solicitada pelas views.

Um exemplo deste tipo de lógica é a usada no aplicativo de exemplo Finanças, no capítulo 13.5, onde temos que retornar a soma das despesas de um certo mês, somar as receitas do mesmo mês e devolver ambas e também o saldo. O bake não faz isso, somente faz as operações básicas de CRUD, somos nós que devemos fazer manualmente e sempre irá depender de cada aplicativo como faremos isso. Por isso é muito importante conhecer como o CakePHP lida com model, controller, view e cia além do CRUD. Me parece que o pontapé inicial recomendado é seguir os tutoriais de criação de aplicativos existentes no site oficial. Depois ir em frente devorando a documentação e todo o material deste livro foi elaborado para colaborar com esta empreitada.

Detalhes

https://book.cakephp.org/3.0/en/orm.html

 

Comments fornecido por CComment

Novo Testamento

E, pedindo ele uma tabuinha de escrever, escreveu, dizendo: O seu nome é João. E todos se maravilharam.
(Lc, 1:63)

Rotas no Mapa do Google

© 2015 Ribamar FS. All Rights Reserved. Designed By JoomShaper