作成したテーブルに初期データやテストデータをを投入するときに使います。前回からテーブルを2つ「subjects」「students」を追加しています。2019_02_16_131312_create_subjects_tableこれでテーブルが追加されました。ここに初期データを投入しましょう。Subjectテーブルは科目、Studentテーブルは生徒、Scoreテーブルは点数です。シーダーファイルを作成するために、make:seederコマンドを実行します。ScoreSeederすると、Laravelプロジェクトフォルダのdatabase/seedsフォルダにファイルSubjectSeeder.php、StudentSeeder.php、ScoreSeeder.phpが作成されます。Subjectシーダー。メソッドが用意されています。シーダーが呼び出されるとこのメソッドが実行されるようになっているため、ここにデータ投入用プログラムを記述します。Eloquentモデルを使えるようにするのを忘れずに。$seed;$subject->save();}}}Subjectクラスのインスタンスを作成して、フィールドに値を設定し、save()メソッドを呼ぶことでレコードが追加されます。このプログラムでは$seeds配列の1つ1つが1レコードとなるようなプログラムになっています。続いてStudentシーダー。こちらはモデルファクトリを使って、フィールド値をランダム生成します。フィールド値には日本語を使いたいので、config\app.phpを次のように修正。'ja_JP',次にファクトリコード用のファイルを作成します。--model=Student作成したファイルdatabase\factories\StudentFactory.phpを次のようにします。$max)),];});$factory->define()の第二引数のクロージャで、Studentレコード1件分の情報としてフィールド名(キー)と値(バリュー)の配列を返すようになっています。$faker->lastName、$faker->firstName部分がランダム生成の部分。これ以外にもcity、phoneNumber、wordなどいろいろ使えます。誕生日は2011/04/02~2012/04/01までの1年間でランダムに生成されるようにしました。database\seeds\StudentSeeder.phpです。20)->create();}}モデルファクトリを使って20個のエントリを簡単に作成できます。database\seeds\ScoreSeeder.phpはこう。rand(50,100);$score->save();}}}}}作成したSubject、Studentの全レコードを取得し、ループで回しながら作成していきます。プログラムができたらシーダーを実行しましょう。実行コマンドはdb:seedです。実行するクラス名を–class=オプションで指定します。--class=ScoreSeederこれは1つずつ実行するコマンドとなりますが、まとめて実行したい場合は最初から用意されているDatabaseSeederクラスを利用するとよいでしょう。run(){$this->call(SubjectSeeder::class);$this->call(StudentSeeder::class);$this->call(ScoreSeeder::class);}}db:seedコマンドをオプションなしで実行します。successfully.これでデータ投入が完了しました。PHP[Laravel]追加のマイグレーション福岡拠点の香月です。前回はDBのマイグレーションを行いました。マイグレーション実行済みのテーブルに変更を行いたい場合、アプリケーションが稼働する前であればロールバックしてマイグレーションをやり直せばいいのですが、本稼働後のバージョンアップなどでデータを棄損することなくテーブルにフィールドを追加したいことがあります。この場合、フィールド追加用のマイグレーションを実施することになります。前回と同じようにマイグレーションファイルを作成しましょう。alter_scores_tableこれによりdatabase/migrations/(日付)alter_scores_table.phpが作成されますので、ここに追加したいフィールドを記載します。{$table->dropColumn('score');});}}up()メソッドにマイグレーション実施時のコードとして、scoreフィールドをexam_dayの後ろに追加するようにしています。クロージャの中では必要なフィールドを1つだけではなく複数記述できます。文字列フィールド、timestampフィールドなど用途に合わせて追加しましょう。カラム修飾子には->after()を使用しています。これ以外にもnullを許容する->nullable()、コメント文字列を指定する->comment()などいろいろ使えますよ。down()メソッドにはロールバック実施時に実行されるコードを記述します。ここ忘れがちなので注意!マイグレーションファイルを作成したら、マイグレーションを実施します。migrateマイグレーションが実施されていないファイルを対象に実施されます。同じファイルが2度3度と実施されることはないので安心してください。実行後に反映されたことを確認しましょう。