Migrations é um recurso que cria a estrutura das tabelas em código e após um comando ele cria as tabelas no banco.
Também permite remover as tabelas do banco e recriar com grande flexibilidade.
No Laravel 5 as migrations ficam no diretório
/database/migrations
Detalhes:
https://laravel.com/docs/5.4/migrations
Criar a migrate já com a estrutura básica
php artisan make:migration create_users_table --create=users
Criar a primeira tabela
php artisan make:migration create_produto_table
php artisan migrate:reset - apagar todas as tabelas
php artisan migrate:refresh - recriar e popular todas as tabelas
php artisan migrate:rollback --step-1
Após o comando mirgation, edite o arquivo gerado em database/migrations e adicione os campos da tabela.
Abrir o arquivo e criar os campos no método up:
Schema::create('produto', function(Blueprint $table){
$table->increments('id');
$table->string('name', 100);
$table->integer('number');
$table->boolean('active');
$table->string('image', 200)->nullable();
$table->enum('category', ['eletronicos', 'moveis', 'limpeza', 'banho']);
$table->text('description');
$table->timestamps();
$table->softDeletes(); //só marca para deleção
});
Campos date usar nullable();
Método down()
Schema::drop('produto');
Criar migration e mudar nome
php artisan miration create_telefones_table --create telefones
Criar as tabelas no banco a partir da migration
php artisan migrate
Após efetuar alterações na estrutura da tabela da migration executar:
php artisan migrate:refresh (apaga tudo e recria)
Seeds - popular banco de dados
Estes populam as tabelas com dados de teste e ficam no diretório:
database/seeds
Detalhes:
https://laravel.com/docs/5.4/seeding
Sintaxe:
php artisan make:seeder UserTableSeeder
use App\User;
public function run(){
User::create([
'name' => 'Carlos Ferreira',
'email' => Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.',
'password' => bcrypt('123456')
])
}
Editar o arquivo
seeds/DatabaseSeeder.php
E mudar a linha:
$this->call(UserTableSeeder::class);
Criar o seed (popula todas as tabelas criadas):
php artisan db:seed
Criar o model e a migration, já com parte do método up
php artisan make:model Produtos -m
php artisan help make:migration
Para apagar as tabelas criadas
php artisan migrate:reset
Criar as tabelas novamente
php artisan migrate:refresh
public function up()
{
Schema::create('livros', function(Blueprint $table) {
$table->increments('id');
$table->string('isbn',20);
$table->integer('autore_id')->unsigned();
$table->string('titulo',40);
$table->timestamps();
$table->foreign('autore_id')->references('id')->on('autores')->onDelete('cascade')->onUpdate('cascade');
});
}
Seed somente para uma tabela/classe
php artisan db:seed --class=UserTableSeeder
Ao deletar um autor deleta todos os livros relacionados a ele (onDelete('cascade')).
$table->foreign('user_id')->references('id')->on('users')
->onUpdate('cascade')
->onDelete('cascade');
$table->foreign('classroom_id')->references('id')->on('classrooms')
->onUpdate('cascade')
->onDelete('set null');
class CreateRolesPermissionsTables extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('label')->nullable();
$table->timestamps();
});
Schema::create('permissions', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('label')->nullable();
$table->timestamps();
});
Schema::create('permission_role', function (Blueprint $table) {
$table->integer('permission_id')->unsigned();
$table->integer('role_id')->unsigned();
$table->foreign('permission_id')
->references('id')
->on('permissions')
->onDelete('cascade');
$table->foreign('role_id')
->references('id')
->on('roles')
->onDelete('cascade');
$table->primary(['permission_id', 'role_id']);
});
Schema::create('role_user', function (Blueprint $table) {
$table->integer('role_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->foreign('role_id')
->references('id')
->on('roles')
->onDelete('cascade');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->primary(['role_id', 'user_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('permission_role');
Schema::drop('role_user');
Schema::drop('roles');
Schema::drop('permissions');
}
}
Comments fornecido por CComment