A ideia é que o projeto seja pequeno, apenas com o essencial para atingirmos o que está sendo proposto.
Entretanto, convém alertar que conhecimento prévio no framework Laravel é essencial, mais por conta de saber como se localizar dentro da aplicação do que pela linguagem PHP propriamente dita.
Conhecimento de banco de dados não é essencial mas se tiver, melhor.
Este artigo foi dividido em etapas de forma que você possa ir direto para cada uma delas caso se sinta confortável ou já tenha realizado atividades semelhantes.
No momento em que escrevo este artigo o PHP está na sua versão 8.1.
Criado em 1994 por Rasmus Lerdorf, teve sua primeira versão liberada somente em 1995 como um pacote de programas CGI.
Atualmente é mantido pelo PHP Group.
Composer
Até meados da década de 1990, era comum o desenvolvedor criar 'na mão' rotinas auxiliares para a aplicação principal, como conectar com bancos de dados por exemplo.
Entretanto, com a popularização da internet muitas dessas rotinas foram parar em repositórios mantidos por desenvolvedores do mundo todo.
E para facilitar a pesquisa e uso dessas rotinas surgiram os gerenciadores de dependências.
Por exemplo, para c# há o Nuget; para JavaScript temos o NPM.
O repositório acessado pelo Composer é o Packagist.
A partir da versão 9 do Laravel recomenda-se que seja utilizado o PHP 8 ou superior.
MySQL
De acordo com a pesquisa anual Stack Overflow Developer Survey 2002, o MySQL Server foi o banco de dados escolhido por mais de 46% do total de respostas e foi citado por 58% das pessoas que estão aprendendo a desenvolver.
Se você se sentir confortável, sugiro instalar individualmente tanto o PHP quando o MySQL.
Se este não for o seu caso, existem pacotes que facilitam a instalação do PHP e MySQL, além de trazer também o Apache como servidor web.
SQLite
Este é um banco de dados pequeno, independente e desenvolvido em C.
Devido à sua versatilidade ele é largamente utilizado em smartphones.
Por conter toda lógica de SQL em um único arquivo físico ele também é usado como "cache" de outras aplicações com o objetivo de reduzir tráfego de rede e processos de I/O em servidores.
Gerenciador de banco de dados
A depender de como a instalação do MySQL foi feita você terá acesso ao banco de dados através do navegador de internet padrão com o PHPMyAdmin.
Entretanto, sugiro a utilização de um gerenciador de banco de dados, como por exemplo DBeaver.
Ele é gratuito e se conecta em quase todos os SGBDs disponíveis na atualidade.
Editor de textos
Há opções para todos os gostos e sistemas operacionais.
Além de ser gratuito, possibilita a instalação de diversas extensões.
Ambiente
PHP
Antes de iniciarmos o projeto é necessário fazer uma pequena alteração no arquivo de configuração do PHP.
O local do arquivo php.ini vai depender de como a instalação foi realizada.
Utilizando o editor de textos de sua preferência abra o arquivo php.ini e localize a seção Dynamic Extensions.
Dentro dessa seção navegue até a seguinte linha ...
;extension=pdo_sqlite
... e remova o 'ponto-e-vírgula' do início, salvando o arquivo em seguida.
MySQL
A ação seguinte pode ser feita através do console do MySQL, pelo gerenciador de banco de dados ou pelo PHPMyAdmin, caso você tenha instalado o MySQL através de um pacote como XAMP ou WAMP.
Acessando o servidor do MySQL crie um banco de dados identificado como 'laravel'.
Informe outro caso este nome já esteja em uso.
Este nome deve ser colocado na variável 'DB_DATABASE' do arquivo '.env' que veremos mais à frente.
Projeto
Criação
Abra o terminal de sua preferência, acesse a pasta que servirá de ponto de partida para o projeto e digite o seguinte comando:
Esta mudança é necessária porque o SQLite não possui um nome de banco de dados.
Arquivo .env
Este arquivo se encontra no diretório raiz da aplicação e faremos uma pequena modificação para conectar ao MySQL.
Com o arquivo no editor, localize as variáveis iniciadas com DB_ e altere os valores para ficar de acordo com a configuração feita na instalação do MySQL:
DB_DATABASE=DB_USERNAME=DB_PASSWORD=
onde:
DB_DATABASE: nome do banco de dados configurado aqui
DB_USERNAME: usuário do banco de dados (geralmente root)
DB_PASSWORD: senha do banco de dados
Salve e feche este arquivo.
Migração
No arquivo de migração que foi criado nesta etapa vamos incluir uma propriedade protegida chamada $connection que receberá o nome da conexão utilizada pela migração desta tabela:
protected$connection='sqlite';
E para finalizar as alterações neste arquivo de migração, vamos colocar duas colunas (title, imdb_rating) no método up():
Na classe \app\Models\Movie.php vamos adicionar somente a propriedade que configura o nome da conexão no modelo:
protected$connection='sqlite';
Seed
Utilizando o facilitador para criar registros aleatórios vamos editar a classe \database\factories\MovieFactory.php criada nesta etapa e alterar o método ´definition()´ ficando como mostrado a seguir:
Em seguida vamos editar a classe \database\seeders\DatabaseSeeder.php alterando o método ´run()´ para que fique de acordo com o código mostrado abaixo:
Certifique-se que o banco de dados está rodando, acesse o terminal novamente e digite o seguinte comando:
phpartisanmigrate
O resultado esperado é a criação da tabela de usuários (users) no no MySQL e a tabela de filmes (movie) no SQLite.
Seed
Volte ao terminal e execute o comando:
phpartisandb:seed
Agora temos 5 usuários e 5 filmes, cada um na sua respectiva tabela.
Optei por criar uma tabela pequena porque, como citado no início do artigo, o objetivo é mostrar os passos para configurar e utilizar mais de um banco de dados na mesma aplicação.
Conclusão
Este cenário pouco comum tem diversas aplicabilidades.
Podemos, por exemplo, manter o registro de atividades da aplicação
em um banco de dados separado para efeitos de auditoria futura.
Outra possibilidade é criar um middleware que grave em uma tabela todas as requisições de entrada que foram realizadas em um período de tempo.
Example of multi database connection in Laravel 9 applications
About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
Laravel is accessible, powerful, and provides tools required for large, robust applications.
Learning Laravel
Laravel has the most extensive and thorough documentation and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
If you don't feel like reading, Laracasts can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript…