Nesse post estarei explicando como realizar a conexão com o banco de dados MySQL testar a conexão e como trabalhar com o MySQL utilizando o Laravel.
- Tutorial Laravel para iniciantes - Parte 01 [Instalação e configuração]
- Tutorial Laravel para iniciantes - Parte 02 [Primeiro Formulário e MVC]
- Tutorial Laravel para iniciantes - Parte 03 [Configuração e manipulação do MySQL]
- Tutorial Laravel para iniciantes - Parte 04 [Controller e Injeção de dependência]
- Tutorial Laravel para iniciantes - Parte 05 [Validar formulário com FormRequest]
- Tutorial Laravel para iniciantes - Parte 06 [Relacionando models com o Eloquent ORM, criando migrations e seeds]
- Tutorial Laravel para iniciantes - Parte 07 [Criando uma Camada de autenticação]
- Tutorial Laravel para iniciantes - Parte 08 [Entendendo view com @extends, @yield e @section]
1) Criando Banco de dados MySQL
Para agilizar o processo utilizei o phpMyAdmin, e criei a tabela de nome laravel_exemplo, fique à vontade para criar da forma que preferir.2) Configurando Laravel para acessar o Banco de dados
O Laravel utiliza um arquivo oculto o ".env", que fica localizado na raiz do projeto para a configuração das variáveis de conexão com o banco de dados, SMTP.Para o nosso exemplo iremos editar apenas os seguintes campos:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Preencha com os dados do seu servidor, onde:- DB_CONNECTION=
- Define o tipo de banco de dados a ser conectado, atualmente o Laravel é compatível com os seguintes bancos: MySQL, Postgres, SQLite, SQL Server. (Database: Getting Started)
- DB_HOST=
- IP ou HOST para conexão do banco dedados.
- DB_PORT=
- Porta de conexão com o banco de dados
- DB_DATABASE=
- Nome do banco a ser conectado.
- DB_USERNAME=
- Usuário de autenticação com o banco de dados.
- DB_PASSWORD=
- Senha de autenticação com banco de dados.
Após configurado vamos testar e ver se a conexão está ok, e para isso iremos utilizar o tinker:
php artisan tinker
O Tinker abre uma conexão com o banco de dados e para testarmos se está configurado corretamente executamos o seguinte comando:
DB::connection()->getDatabaseName()
Se o comando retornar o nome do seu banco de dados quer dizer que está tudo certoExemplo do retorno do comando getDatabaseName(); |
3) Criando a tabela "contatos" usando o migrations do Laravel
As migrations são como o controle de versão para seu banco de dados, permitindo que sua equipe modifique facilmente e compartilhe o esquema de banco de dados do aplicativo. (Migrations & Seeding)Vamos utilizar o comando artisan do Laravel para agilizar a nossa vida, execute o seguinte comando:
php artisan make:model Contato -m
Resultado do comando:
Resultado do comando php artisan make:model |
Ao passar o parâmetro "-m" faz com que seja criado também o Schema (esquema) da tabela "contatos", que fica localizado em:
"database/migrations/2017_04_11_141731_create_contatos_table.php".
E é esse arquivo que iremos mexer agora, nele que iremos definir as colunas de nossa tabela "contatos", para isso basta adicionar os novos campos dentro do Schema::create:
Agora vamos criar essa tabela em nosso banco de dados, para isso execute o seguinte comando:
Note que também foram criadas outras tabelas, por padrão elas já são baixadas na instalação do Laravel.
OBS.: No meu caso ocorreu um erro de SQL, quando realizado o migrate, a classe que cria a tabelas "users" estava dando erro de SQL para solução rápida fiz o que: na linha onde contem: $table->string('email')->unique(); removi o ->unique(); e o problema foi solucionado.
Exemplo do erro:
Abra o diretório routes e dentro dele o arquivo web.php dentro dele o conteúdo dele pelo seguinte:
Agora caso tenha esquecido vamos iniciar o nosso servidor de testes novamente e para isso basta executar no terminal o seguinte comando:
Para isso inicialmente vamos criar uma nova rota, chamada "/listar" e para isso vá no diretório routes e dentro dele abra o arquivo web.php e vamos adicionar uma nova rota.
Adicione esse código abaixo da última rota criada:
Agora com sua view pronta podemos visualizar o resultado, caso o servidor de desenvolvimento não esteja rodando execute o comando:
Para visualizar a lista basta abrir o caminho: "http://127.0.0.1:8000/listar".
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateContatosTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('contatos', function (Blueprint $table) {
$table->increments('id');
$table->string('nome');
$table->string('email');
$table->text('mensagem');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('contatos');
}
}
Agora vamos entender o código, irei atentar somente onde precisaremos alterar, então: dentro do Schema::create(); adicionamos os parâmetros para a criação da nova tabela, o qual nesse exemplo temos: id, que é um int auto increment, as string nome e email, também temos a coluna mensagem em text, abaixo temos a função down(); que exclui a tabela caso já exista.Agora vamos criar essa tabela em nosso banco de dados, para isso execute o seguinte comando:
php artisan migrate
Esse comando irá basicamente executar e criar as tabelas conforme o que for determinado na nossa classe criada anteriormente.Resultado do comando php artisan migrate |
OBS.: No meu caso ocorreu um erro de SQL, quando realizado o migrate, a classe que cria a tabelas "users" estava dando erro de SQL para solução rápida fiz o que: na linha onde contem: $table->string('email')->unique(); removi o ->unique(); e o problema foi solucionado.
Exemplo do erro:
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
Tabelas criadas, vistas pelo phpMyAdmin |
4) Inserir os dados dor formulário no banco de dados
Para essa parte do Tutorial será necessário ter a primeira parte a qual criamos um formulário caso não tenha visto no início do post tem um glossário com os Tutoriais.Abra o diretório routes e dentro dele o arquivo web.php dentro dele o conteúdo dele pelo seguinte:
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::post('/enviar', function(Illuminate\Http\Request $request) {
$contato = new App\Contato();
$contato->nome = $request->get('nome');
$contato->email = $request->get('email');
$contato->mensagem = $request->get('mensagem');
$contato->save();
echo "Dados Salvos com sucesso! id de registro: " . $contato->id;
});
Entendendo o código, instanciámos a classe Contato e declaramos os atributos que foram passados pela requisição, (o formulário enviado), como a classe Contato e um extinção da classe Model -Illuminate\Database\Eloquent\Model- podemos usar todos os seus métodos por exemplo o: $contato->save(); que utilizamos para salvar os dados no banco de dados.Agora caso tenha esquecido vamos iniciar o nosso servidor de testes novamente e para isso basta executar no terminal o seguinte comando:
php artisan serve
Que ele certamente irá levantar no seguinte endereço 127.0.0.1:8000
5) listando as mensagens enviadas para o servidor
Agora que já sabemos como enviar dados para o servidor, nada mais relevante do que consultar esses dados!Para isso inicialmente vamos criar uma nova rota, chamada "/listar" e para isso vá no diretório routes e dentro dele abra o arquivo web.php e vamos adicionar uma nova rota.
Adicione esse código abaixo da última rota criada:
Route::get('/listar', function(){
return view('listar', array('contatos'=> App\Contato::all()));
});
Essa rota irá carregar a view "listar" quando receber uma requisição GET "/listar", para isso primeiro precisamos criar esta view então crie dentro do diretório "resources/views" o arquivo "listar.blade.php" que irá conter todo o HTML abaixo:
Agora com sua view pronta podemos visualizar o resultado, caso o servidor de desenvolvimento não esteja rodando execute o comando:
php artisan serve
Que ele certamente irá levantar no seguinte endereço "http://127.0.0.1:8000"
Para visualizar a lista basta abrir o caminho: "http://127.0.0.1:8000/listar".
Conclusão
Nesse post aprendemos como realizar a configuração do Laravel para acessar o banco de dados do MySQL, aprendemos como enviar e salvar esses dados no banco de dados e também como exibir essas informações através de uma nova view. Estamos progredindo bem! Que venha o próximo tutorial!
Se vocês gostaram desse Post não deixe de compartilhar com seus amigos!!!
E para não perder nenhuma novidade nos sigam nas redes sociais:
Twitter: @Bulfaitelo
Facebook: Bulfaitelo Project
Blogger: Bulfaitelo Project