Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

基礎知識

シーダーについて(基本)

2017/10/27

シーダーとは

マイグレーションでDBのテーブルを作成したらテストでサンプルデータをいれてみます。

これをシーダーと言います。

大きな流れとしては

1.シーダーファイルを作成
2.シーダーファイルのrun()にサンプルデータを記述
3.DatabaseSeeder.phpでシーダーファイルをコール
4.シーダーの実行

となります。

図であらわすとこんな感じです。

 

チュートリアル

以前マイグレーションで「employees」(従業員)テーブルを作成しました。

マイグレーション(更新作業)

このテーブルにサンプルデータを入れます。

手順

1)シーダーファイルの作成
2)シーダーファイルの編集
 1.Eloquentでデータを入れる場合
 2.クエリービルダーを使ってデータを入れる場合
3)DatabaseSeeder.php 編集
4)シーダー実行
5)動作確認

 

1)シーダーファイルの作成

シーダーファイルの作成はartisanコマンドで用意されています。

php artisan make:seed EmployeesTableSeeder

コマンドを実行すると database/seeds/ にEmployeesTableSeeder.php(シーダーファイル) が作成されます。

 

2)シーダーファイルの編集

runメソッドにデータの流し込みなどの記述をします。

DBの入れるやり方は主に

1.Eloquent
2.DBファサード

の2つがあります。

 

1.Eloquentでデータを入れる場合
:
public function run(){

  // 1レコード
  $employee = new \App\Employee([
    'dept_id' => '1',
    'name' => '川端 莉緒',
    'email' => 'kawabata_rio@example.com'
  ]);
    $employee->save();

  // 2レコード
  $employee = new \App\Employee([
  'dept_id' => '2',
  'name' => '小玉 隆博',
  'email' => 'kodama_takahiro@example.com'
  ]);
  $employee->save();

  // 3レコード
  $employee = new \App\Employee([
  'dept_id' => '1',
  'name' => '岩井 圭',
  'email' => 'iwai_kei@example.com'
  ]);
  $employee->save();

}
【 注意 】
Eloquentでデータを入れる場合は事前にモデルを作成して登録できる項目を宣言しておく必要があります。

1)モデル作成

php artisan make:model Employee

2)カラムに値を挿入できるようにする

:
public $timestamps = false; //timesatampを利用しない
protected $fillable = ['dept_id', 'name', 'email'];
:

 

2.DBファサードを使ってデータを入れる場合

:
public function run()
  {
  \DB::table('employees')->insert([
  'dept_id' => '1',
  'name' => '川端 莉緒',
  'email' => 'kawabata_rio@example.com'
  ]);
:
【 解説 】
DBファサードを使ってサンプルデータを挿入する場合は、そのまま複数のデータを挿入できます。

 

3)DatabaseSeeder.php 編集

作ったシーダーファイルを DatabaseSeeder.php から呼び出します。

DatabaseSeeder.php はデフォルトで用意されています。

:
public function(){
 $this->call(EmployeesTableSeeder::class);
}

 

4)シーダー実行

下記のコマンドで DatabaseSeeder.php 内のrunメソッド が実行されるようになります。

php artisan db:seed

 

5)動作確認

> select * from employees;

基本的なシーダーの使い方については以上です。

 

-基礎知識