「CRUDアプリの作成」のSTEP2になります。
前回は「ビュー」画面を作成しました。
今回はDBのテーブルを作成し、サンプルデータを挿入してみます。
今回のゴール
【 今回の作業 】
・DBのテーブル作成
・サンプルデータを挿入
・phpMyAdmin(もしくはMySQLコマンド)でサンプルレコードを表示
手順
マイグレーションファイル作成・実行
テーブル構成
【テーブル名】students
項目 | 変数名 | データ型 |
---|---|---|
ID | id | bigint(20) |
名前 | name | varchar(255) |
メール | 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
# オプションで --class を使えば特定のシーダーだけ実行される
php artisan db:seed --class=StudentsTableSeeder
なお、シーダーについては以下のページで詳しく紹介しています。
DBのテーブルの中身を確認
phpMyAdmin で確認。(※もちろんMySQLコマンドで確認してもOK)
今回はここまで。
次回はコントローラーとビューを編集してDBテーブルの中身を表示させてみます。
以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。