ORM

O Hello oferece manipulação de banco de dados relacional por meio de sua API simples de ORM.

O ORM (Object-Relational Mapping) é uma técnica de programação que mapeia objetos do código em estruturas do banco de dados, tornando a comunicação com o banco mais fácil e intuitiva. No Hello, é possível utilizar uma ORM simples por meio da classe DB e Model.

A classe DB é responsável por gerenciar a conexão com o banco de dados. É possível especificar os parâmetros de conexão (host, usuário, senha e nome do banco) e realizar consultas diretamente por meio dessa classe.

Já a classe Model é responsável por representar uma tabela do banco de dados como um objeto na aplicação. É possível criar uma classe que herda da classe Model e definir os campos da tabela como atributos dessa classe. A partir daí, é possível utilizar métodos da classe Model para realizar operações de CRUD (Create, Read, Update, Delete) no banco de dados de forma simplificada.

Por exemplo, suponha que se tenha uma tabela chamada "usuarios" com os campos "id", "nome" e "email". A classe Model correspondente a essa tabela seria definida da seguinte forma:

class Usuario extends Model {
    protected $table = 'usuarios';
    protected $fillable = ['nome', 'email'];
}

Nesse caso, a propriedade $table indica o nome da tabela no banco de dados, e a propriedade $fillable indica quais são os campos que podem ser preenchidos ao criar ou atualizar um registro.

Com essa definição, é possível criar um novo registro na tabela de usuários da seguinte forma:

$usuario = new Usuario();
$usuario->nome = 'João';
$usuario->email = 'joao@example.com';
$usuario->save();

E também é possível buscar todos os usuários cadastrados na tabela:

$usuarios = Usuario::all();

Essa é apenas uma breve introdução ao uso do ORM simples do Hello. É possível utilizar outras funcionalidades, como relacionamentos entre tabelas e consultas mais complexas, por meio dessa API. Um modelo de certa forma implenta os principais metodos da classe DB conforme a lista de métodos publicos abaixo:

A classe DB possui os seguintes métodos públicos:

  • setConnection($connection): Define a conexão com o banco de dados.

  • setUseFillable($value): Define se o modelo utiliza o atributo fillable.

  • setFillable($value): Define os campos preenchíveis do modelo.

  • getFillable(): Retorna os campos preenchíveis do modelo.

  • setTrash(bool $trash): Define se o modelo utiliza a lixeira (soft delete).

  • withTrash(): Define que a consulta deve incluir registros da lixeira.

  • onlyTrash(): Define que a consulta deve retornar apenas registros da lixeira.

  • setAttributes(array $attributes): Define os atributos do modelo.

  • setTimestamps(bool $timestamps): Define se o modelo utiliza timestamps.

  • setNamespace($namespace): Define o namespace do modelo.

  • execute($sql): Executa uma instrução SQL diretamente.

  • schema($table=null): Retorna informações sobre a estrutura das tabelas do banco de dados.

  • fetch($sql): Executa uma consulta SQL e retorna o resultado.

  • query($sql=null): Cria uma instância da classe DB para realizar consultas.

  • setTable($table): Define a tabela do modelo.

  • getPrimaryKey(): Retorna o nome da chave primária do modelo.

  • find($id): Busca um registro pelo ID.

  • checkFillable($data): Verifica se os campos enviados para criação do modelo estão no atributo fillable.

  • create($data): Cria um novo registro no banco de dados.

  • insert($data): Insere um ou mais registros no banco de dados.

  • insertGetId($data,$all=false): Insere um registro no banco de dados e retorna o ID.

  • table($table,$connection=null): Cria uma nova instância da classe DB associada a uma tabela.

  • connection($connection,$table=null): Cria uma nova instância da classe DB associada a uma conexão e, opcionalmente, a uma tabela.

  • where($column, $operator=null, $value=null,$value2=null): Adiciona uma cláusula WHERE à consulta.

  • setIds(): Define os IDs do modelo.

  • getIds(): Retorna os IDs do modelo.

  • setPrimaryKey($name): Define o nome da chave primária do modelo.

  • save(): Salva os dados do modelo no banco de dados.

  • sum($row): Calcula a soma de uma coluna.

  • avg($row): Calcula a média de uma coluna.

  • count($row='*'): Conta o número de registros.

  • get(): Executa a consulta e retorna os resultados.

  • results(): Executa a consulta e retorna o resultado bruto.

  • exists(): Verifica se existe pelo menos um registro na consulta.

  • doesntExist(): Verifica se não existe nenhum registro na consulta.

  • getOnlyFetch(): Retorna o resultado da consulta sem tratar como coleção.

  • all(): Retorna todos os registros da consulta.

  • have($d): Verifica se a consulta possui registros com determinados valores.

  • filter($d): Filtra a consulta pelos valores especificados.

  • updateOrCreate($filter,$data): Atualiza um registro existente ou cria um novo caso não exista.

Last updated