Laravel 02日目:データベース接続とSeedを使ったデータ投入やってくよ!

今日やること

データベース接続設定の修正

config/.env の設定値を環境に合わせて修正していく

DB_CONNECTION=mysql
DB_HOST=[IP]
DB_PORT=[ポート番号]
DB_DATABASE=[データベース名]
DB_USERNAME=[ユーザ名]
DB_PASSWORD=[パスワード]

マイグレーションを使ってテーブル作成

マイグレーションファイル作成

database/migrationsの下にファイルが作成されている。

$ php artisan make:migration create_users_table
Created Migration: 2019_12_02_232635_create_users_table

マイグレーションファイル修正

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

マイグレーション実行

$ php artisan migrate
Migration table created successfully.
Migrating: 2019_12_02_232635_create_users_table
Migrated:  2019_12_02_232635_create_users_table (0.06 seconds)

ロールバックはこうする

$ php artisan migrate:rollback
Rolling back: 2019_12_02_232635_create_users_table
Rolled back:  2019_12_02_232635_create_users_table (0.04 seconds)

テーブルの確認

mysql> desc users;
+------------+---------------------+------+-----+---------+----------------+
| Field      | Type                | Null | Key | Default | Extra          |
+------------+---------------------+------+-----+---------+----------------+
| id         | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)        | NO   |     | NULL    |                |
| email      | varchar(255)        | NO   | UNI | NULL    |                |
| password   | varchar(255)        | NO   |     | NULL    |                |
| created_at | timestamp           | YES  |     | NULL    |                |
| updated_at | timestamp           | YES  |     | NULL    |                |
+------------+---------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

Seed

Seedファイル作成

$ php artisan make:seeder UsersTableSeeder
Seeder created successfully.

Seedデータ作成

database/seeds/UsersTableSeeder.php

<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'name' => Str::random(10),
            'email' => Str::random(10).'@m.cybermergina.top',
            'password' => bcrypt('password'),
        ]);
    }
}

database/seeds/DatabaseSeeder .php

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
         // ここを追加してSeed実行時に追加したSeedクラスが呼ばれるようにする
        $this->call(UsersTableSeeder::class);
    }
}

Seed実行

$ php artisan db:seed
Seeding: UsersTableSeeder
Seeded:  UsersTableSeeder (0.09 seconds)
Database seeding completed successfully.

データ確認

mysql> select * from users;
+----+------------+-------------------------------+--------------------------------------------------------------+------------+------------+
| id | name       | email                         | password                                                     | created_at | updated_at |
+----+------------+-------------------------------+--------------------------------------------------------------+------------+------------+
|  1 | 1t0gtLmC5G | bO2FYpxwHi@m.cybermergina.top | xxxx | NULL       | NULL       |
+----+------------+-------------------------------+--------------------------------------------------------------+------------+------------+
1 row in set (0.00 sec)

所感

今のところ特に何にも躓くこともなく順調にいっている。良き良き。 ただ、細かいところは読めてないので大枠作り終えたらドキュメントの隅まで見たいなという気持ち。