CRUDアプリの作成 STEP2:「DBテーブル」「シーダー」の作成

「CRUDアプリの作成」のSTEP2になります。

前回は「ビュー」画面を作成しました。

今回はDBのテーブルを作成し、サンプルデータを挿入してみます。

 

今回のゴール

【 今回の作業 】
・DBのテーブル作成
・サンプルデータを挿入
・phpMyAdmin(もしくはMySQLコマンド)でサンプルレコードを表示

 

手順

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

テーブル構成

【テーブル名】students

項目 変数名 データ型
ID id bigint(20)
名前 name varchar(255)
メール email varchar(255)
電話 tel varchar(255)
メッセージ message varchar(255)
新規作成日時 created_at timestamp
更新日時 updated_at timestamp

テーブル構成が決まったらマイグレーションファイルを作成し、DBのテーブルを作成します。

マイグレーションファイルについて詳しくは以下をご参照ください。

まずは、artisanコマンドを使ってマイグレーションファイルのスケルトンを作成します。


php artisan make:migration create_students_table --create=students

 

次に作りたいTABLEの構成に従って、Schmaファサードを使って以下のようにカラムを作成していきます。


public function up()
{
    // Schemaファサードで students テーブルの作成
    Schema::create('students', function (Blueprint $table) {

        // カラムを作成していく
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('tel');
        $table->string('message');
        $table->timestamps();
    });
}
public function down()
{
    // テーブル削除(ロールバック)
    Schema::dropIfExists('students');
}

 

マイグレーションファイルの編集が終わったら実行してテーブルを作成します。


php artisan migrate

 

phpMyAdminで確認すると以下のように表示されていればOK。

 

モデルの作成

DBの students テーブルにあるレコードを操作をできる(Eloquent)ようにするために モデル を作成しておきます。

モデルについて詳しくは以下をご参照ください。


php artisan make:model Student

 

ブラックリスト方式で記述。


:
class Student extends Model
{
    protected $guarded = ['id'];
}
:

 

 

シーダーファイルの作成・実行

マイグレーションファイルで作成したDBテーブルにサンプルレコードを入れていきます。

まずはシーダーファイルの作成をします。


php artisan make:seeder StudentsTableSeeder

 

自動生成されたシーダーファイル(\database\seeds\StudentsTableSeeder.php)のスケルトンに中身を入れていきます。


:
public function run()
{
    //
    # リセット
    DB::table('students')->delete();

    # 日本語設定
    $faker = Faker\Factory::create('ja_JP');

    # サンプルデータの挿入
    for ($i = 0; $i < 10; $i++) {
        \App\Student::create([
            'name' => $faker->name(),
            'email' => $faker->email(),
            'tel' => $faker->phoneNumber(),
            'message' => $faker->text()
        ]);
    }
}
:

 

シーダーの大元ファイル(DatabaseSeeder.php)に先ほど作成したシーダーファイルを呼び出します。


public function run()
{
    # StudentsTableSeeder を呼び出すよう登録
    $this->call(StudentsTableSeeder::class);
}

 

これでシーダーファイルを実行します。


php artisan db:seed

 

特定のシーダーファイルだけ実行させることもOKです。


# オプションで --class を使えば特定のシーダーだけ実行される
php artisan db:seed --class=StudentsTableSeeder

なお、シーダーについては以下のページで詳しく紹介しています。

 

DBのテーブルの中身を確認

phpMyAdmin で確認。(※もちろんMySQLコマンドで確認してもOK)

 
今回はここまで。

次回はコントローラーとビューを編集してDBテーブルの中身を表示させてみます。

以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-チュートリアル, 初級