Laravel: usando o ORM Eloquent

O que é um ORM?

Do inglês (Object Relational Mapper), ORM é uma técnica de desenvolvimento de software que serve para o uso de tabelas de bancos de dados em formato de objetos relacionais, facilitando assim a manutenção de dados. Usando esta técnica o programador não precisa se preocupar em escrever códigos na linguagem SQL, pois a listagem e persistência é toda feita pela interface do ORM. Alguns exemplos são: Hibernate, usado para a linguagem Java; Sequelize, usado para Node.js; entre outros.


Eloquent

O framework Laravel, usado para desenvolver software com a linguagem PHP, conta com uma série de ferramentas para facilitar o trabalho do programador. Uma dessas ferramentas é o Eloquent ORM, que faz com que a interação com o banco de dados se torne mais fácil e elegante.

Usando esta ferramenta você pode usar:

  • Funções básicas de CRUD;
  • Relacionamentos um-para-um;
  • Relacionamentos um-para-vários;
  • Relacionamentos vários-para-vários;
  • e Relacionamentos polimórficos.

Como o Eloquent trabalha?

O Eloquent provê um Active Record Pattern, ou seja um padrão de registro ativo, que transforma a sua tabela ou view do banco de dados em uma classe do PHP. Este tipo é ideal para uma estrutura MVC, onde a classe criada pelo ORM é chamada de Model ou modelo.

O model Usuario, por exemplo, vai corresponder à tabela usuario no seu banco de dados, e é a instancia direta para a tabela em uma estrutura MVC. Por exemplo, se você deseja listar todos os registros dessa tabela, você deve usar: Usuario::all(). Veja alguns exemplos:

Descrição Função
Lista todos os usuários Usuario::all()
Encontra um registro específico Usuario::find(id)
Apagar um registro Usuario::delete(id)

Aplicação exemplo

GitHub

 

Faremos uma aplicação para cadastro de Perfil Usuario onde haverão relações de um-para-um e de um-para-vários.

Um perfil pode ter vários usuários, e um usuário pode ter apenas um perfil. Eu posso listar usuários com o perfil, ou listar os perfis com seus usuários.

Se você é novo em Laravel, sugiro que leia estes tutoriais primeiro:


Iniciando Aplicação Laravel

Você pode usar o instalador do Larvel, executando o seguinte comando no bash:

$ composer global require “laravel/installer”

O Laravel será instalado de forma global. Depois você pode iniciar um aplicativo Laravel com o seguinte comando:

$ laravel new exemplo

Lembrando que exemplo será o nome da pasta de sua aplicação.

Criando projeto com composer

Você pode usar o comando create-project  do composer, que é a alternativa mais indicada para usuários Windows. Veja como fazer:

$ composer create-project laravel/laravel exemplo --prefer-dist

Será criada a pasta exemplo e dentro dela uma série de pastas e arquivos do Laravel. As principais pastas que iremos usar serão app config.


Configurando o Virtual Host

Você precisa configurar um virtual host para apontar para a pasta da sua aplicação de exemplo. Farei este exemplo usando WAMP instalado obviamente em um computador com sistema operacional Windows.

Arquivos hosts

Primeiro abra o arquivo hosts do Windows, que está em C:\Windows\System32\drivers\etc e adicione o seguinte no final:

127.0.0.1    laravel.exemplo

laravel.exemplo será o domínio para acessar nossa api.

Virtual host

Se você estiver usando Windows e WAMP o arquivo de virtual hosts estará emC:\wamp\bin\apache\apache2.4.17\conf\extra, tenha atenção à versão do apache.

Adicione o seguinte no arquivo:

Você deve colocar o caminho da sua API apontando para a pasta public, por exemplo: C:/wamp/www/exemplo/public

Acesse o endereço laravel.exemplo no seu navegador. Você verá a tela de demonstração do Laravel.

Lembrando a configuração do Virtual Hosts pode ser diferente em determinados sistemas operacionais.


Banco de dados

Crie um banco de dados com o nome exemplo_eloquent.

Configuração

Abra o arquivo database.php que está dentro da pasta config da sua aplicação Laravel, e você verá um vetor com diversas chaves, uma delas será a connections onde você vai encontrar exemplos de conexões de bancos de dados SQLite, MySQL e PostgreSQL. Usaremos MySQL, então modifique as configurações para o seguinte:


Migrations

O Laravel conta com um sistema para migração de bancos de dados, para facilitar a mudança de servidor ou tipo de banco de dados se ela for precisa. E também é ótimo para quem trabalha com código compartilhado.

Para criar uma migration precisamos usar o seguinte comando:

$ php artisan make:migration Perfil –create=perfil

Os arquivos de migração serão criados na pasta database/migrations, o nome de cada um deles será composto pela data e hora atual mais o termo informado, como Perfil por exemplo, e ele terá extensão .php.

Abra esse arquivo e veja que ele é basicamente uma classe que conta com dois métodos (up down) sem conteúdo algum dentro deles.

Migration Perfil

Adicionaremos o seguinte código dentro do método up() do arquivo referente a Perfil:

Migration Usuario

Execute o comando:

$ php artisan make:migration Usuario –create=usuario

Migrando

Para completar a migração execute:

$ php artisan migrate

Note que no seu banco de dados serão criadas as tabelas perfil, usuario migrations.


Eloquent models

Agora, já com o banco de dados migrado, faremos os nossos modelos. Os models devem ficar na pasta app, mas podem ser criados com linha de comando também.

Perfil

Para criar o model execute o seguinte comando:

$ php artisan make:model Perfil

Deixaremos o arquivo app/Perfil.php da seguinte maneira:

Note dentro da function usuarios que usamos uma relação de um-para-vários (hasMany) para o model Usuario.

Usuario

Criamos o model Usuario com o seguinte comando:

$ php artisan make:model Usuario

E deixaremos o arquivo app/Usuario.php da seguinte maneira:

Note que dentro da function perfil fazemos uma relação de um-para-um com o model Perfil que foi criado anteriormente.

Usando Eloquent na inserção de dados

Faremos a inserção de dados através de Seeders. Na pasta database/seeds você vai encontrar o arquivo DatabaseSeeder, edite ele para que fique da seguinte forma:

Agora execute o comando:

$ php artisan db:seed

Os dados serão inseridos no seu banco de dados.

No exemplo acima usamos apenas um arquivo seeder, mas podemos usar vários outros para facilitar o trabalho, você só precisa chama-los na função run() de DatabaseSeeder.php


Usando Eloquent para buscar dados

Abra o arquivo app/Http/routes.php, que contem as rotas da nossa aplicação.

Adicione as seguintes rotas a ele:

Agora abra um navegador de sua preferência e digite os seguintes endereços:

URL Função
laravel.exemplo/perfis Lista todos os perfis com usuários
laravel.exemplo/perfil/1 Mostra apenas o perfil de id 1 com usuários
laravel.exemplo/usuarios Lista todos os usuários com seu respectivo perfil
laravel.exemplo/usuario/1 Lista o usuário de id 1 com seu respectivo perfil

Concluindo

Existem outras várias funções e relacionamentos que o Eloquent fornece, mas isso é coisa para outros tutoriais.

Veja o código fonte deste exemplo no GitHub

Sobre o autor:

Graduado em Análise e Desenvolvimento de Sistemas - FLS; Desenvolvedor Full-stack na UniLeão; Revisor de conteúdo do site Clube dos Geeks, católico, gosto de ler e escrever.

Postagens relacionadas:

Deixe uma resposta

Seu e-mail não será publicado.