Curso de Laravel para Noobs - #9 Migrations
20/12/2022No tutorial de hoje aprenderemos o que são as migrations no Laravel, suas funcionalidades e sua importância no versionamento do banco de dados.
Migrando tabelas do banco
Para trabalhar com banco de dados MySql precisamos de um servidor de banco de dados, para tanto você precisará a instalar o Xampp
Para acessar o gerenciador de banco de dados PhpMyAdmin basta ativar o Xampp e acessar a url http://localhost/phpmyadmin
Caso apareça o login, será usuário root sem senha.
.env
No nosso exemplo criamos o banco de dados com nome "sistema". Logo, temos que configurar o Laravel para que ele entenda que o banco a ser usado é o sistema. Diante disso, no arquivo .env vamos definir os dados do banco:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sistema
DB_USERNAME=root
DB_PASSWORD=
config/database.php
É importante também definir o engine do banco como InnoDB para que habilite o sistema de relacionamento entre tabelas. Para isso, vamos definir o engine no arquivo config/database.php
'engine' => 'InnoDB',
Apesar do Laravel possuir um comando próprio para criação da migration, eu sempre prefiro criar o model e o controller associado. Para isso, eu costumo utilizar o seguinte comando:
php artisan make:model Qualquernome -mcr
Para criar as tabelas no banco através das migrations nós utilizamos o seguinte comando:
php artisan migrate
Caso você queira reverter a migração, você pode utilizar o seguinte comando:
php artisan migrate:rollback
E caso você queira atualizar uma tabela você tem o comando:
php artisan migrate:refresh
database/migrations/2022_12_20_121628_create_todos_table.php
A estrutura da nossa migration ficou assim:
public function up()
{
Schema::create('todos', function (Blueprint $table) {
$table->id();
$table->string('nome');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->timestamps();
});
Schema::table('todos', function (Blueprint $table) {
$table->integer('votos')->after('nome')->nullable();
});
}
public function down()
{
Schema::dropIfExists('todos');
}
Por hoje é só! Sucesso nos códigos e na vida!
Precisa de um suporte? webdesignemfoco@gmail.com