Laravel Migrations: Indo além do create table

Provavelmente se você chegou até aqui, você já usou as migrations do Laravel pra criar/alterar as tabelas do seu projeto.

Mas você já parou pra pensar que elas podem servir pra muito mais coisas, além da criação das tabelas? Você não é obrigado a utilizar o Schema Builder dentro das migrations, e você pode colocar qualquer código PHP que te interesse ali.

Vamos a alguns exemplos práticos:

1 — Você pode utilizar uma migration pra criar alguns registros iniciais que o seu app precisa.

use App\Models\Category;
use Illuminate\Database\Migrations\Migration;
class CreateCategoriesRecords extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Category::create(['title' => 'Calçados']);
Category::create(['title' => 'Vestuário']);
Category::create(['title' => 'Acessórios']);
}
}

Isto seria útil tanto para o seu cliente, para quando você subir na sandbox/homologação ou whatever ele já ter alguns registros criados, quanto para os outros desenvolvedores do seu time que ao rodar um php artisan migrate não vão ficar perdidos pensando o que eles precisam cadastrar.

2 — Você pode utilizar migrations para fazer upgrades de versões

Digamos que você tenha um pacote Laravel que tenha diversas versões, e toda vez que a versão é atualizada é necessário realizar algumas tarefas como mover imagens de lugar, deletar diretórios, remover registros ou seja lá o que for.

public function up()
{
$medias = Media::all();
    $medias->each(function($media) {
File::copy(
public_path() . '/files/medias/' . $media->file,
storage_path() . '/app/medias/' . $media->file
);
});
    File::deleteDirectory(public_path()  . '/files/medias');
}

Eu, por exemplo, trabalho em uma plataforma de e-commerce que foi desenvolvida em Laravel. E toda vez que precisamos atualizar a versão de alguma loja, executamos o seguinte comando artisan:

$ php artisan upgrade 0.4

Este comando apenas executa as migrations de um determinado diretório.

Estes são apenas alguns exemplos, mas a ideia principal deste post é abrir o leque de possibilidades do que as migrations podem servir.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.