Don't you speak portuguese? Translate this site with Google Translator

Pensamento do Dia

Há pessoas que choram por saberem que as rosas têm espinhos; outras há que sorriem por saberem que os espinhos têm rosas. (Autor desconhecido)

Migrations no Laravel

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

Novo Testamento

E ninguém seja devasso, ou profano, como Esaú, que por uma refeição vendeu o seu direito de primogenitura.
(Hb, 12:16)

Rotas no Mapa do Google

© 2015 Ribamar FS. All Rights Reserved. Designed By JoomShaper