Tutorial Laravel para iniciantes - Parte 03 [Configuração e manipulação do MySQL]

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.

Glossário:

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 certo
Exemplo 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
Esse comando "make" cria uma classe "Contato" que estende a classe "Model" que está localizada dentro do diretório "/app".
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:
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
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:
[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
Share on Google Plus

About Thiago Rodrigues

Formado em Sistema de Informação pela Faculdade Paraíso
O que falar de mim? Não á muito, mas garanto que meu objetivo aqui é somente ajudar!
Atualmente desenvolvendo o projeto do QiEstudo.

Comentários
0 Comentários

0 comentários:

Postar um comentário