CSVエキスポートのページ作成(ステップ1:マイグレーション・モデル・シーダー)

2019/08/26

Laravelを使ってDBにある情報をCSVでダウンロードする機能を作成するシリーズです。

前回はイントロをエントリーしました。

今回はテーブルを作成してサンプルデータを入れるところまでやります。具体的には

・マイグレーション
・モデル
・シーダー

の作成をやります。

 

手順

 

1.マイグレーションファイルの作成&実行

マイグレーションファイルのスケルトン作成

// 認証用テーブルの作成
php artisan make:migration create_auth_information_table --create=auth_information 

// プロフィール用テーブルの作成
php artisan make:migration create_profiles_table --create=profiles

 

マイグレーションファイルの編集
***_create_auth_information_table.php

public function up()
{
    Schema::create('auth_information', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('authinformation_id')->after('id');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

 

***_create_profiles_table.php

public function up()
{
    Schema::create('profiles', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name')->comment('なまえ');
        $table->string('address')->comment('住所');
        $table->date('birthdate')->comment('生年月日');
        $table->string('tel')->comment('電話番号');
        $table->text('msg')->comment('メッセージ');
        $table->timestamps();
    });
}

 

マイグレーションファイルの実行

php artisan migrate

 

マイグレーションファイルに関しての基本的な解説は以下をご覧ください。

 

2.モデルの作成

モデルのスケルトンを作成

// 認証用
php artisan make:model Models\AuthInformation

// プロフィール用
php artisan make:model Models\Profile

 

モデルの編集
認証用(AuthInformation.php)

class AuthInformation extends Model
{
    //テーブル名を変更したい
    protected $table = 'auth_information';

    //ブラックリスト方式
    protected $guarded = ['id'];
}

 

プロフィール用

class Profile extends Model
{
    //ブラックリスト方式
    protected $guarded = ['id'];
}

 

モデルの作成に関しての基本的な解説は以下をご覧ください。

 

3.シーダーファイルの作成&実行

シーダーファイルのスケルトン作成

// 認証用
php artisan make:seed AuthInformationTableSeeder

//プロフィール用
php artisan make:seed ProfileTableSeeder

 

シーダーファイルの編集
認証用(AuthInformationTableSeeder.php)

public function run()
{
    // 一旦テーブル削除
    DB::table('auth_information')->delete();

    // faker使う
    $faker = Faker\Factory::create('ja_JP');

    // レコード100人分出力
    for($i=0; $i < 100; $i++){
        \App\Models\AuthInformation::create([
            'email' => $faker->email(),
            'password' => $faker->password(),
        ]);
    }
}

 

プロフィール用(ProfileTableSeeder.php)

public function run()
{
    //一旦削除
    DB::table('profiles')->delete();

    // faker使う
    $faker = Faker\Factory::create('ja_JP');

    // レコード100人分出力
    for($i=0; $i < 100; $i++){
        \App\Models\Profile::create([
            'authinformation_id' => $i+601,
            'name' => $faker->name(),
            'address' => $faker->address(),
            'birthdate' => $faker->dateTimeBetween('-80 years', '-20years')->format('Y-m-d'),
            'tel' => $faker->phoneNumber(),
            'msg' => $faker->text()
        ]);
    }
}

 

シーダーファイルの実行

php artisan db:seed

 

シーターについての基本的な解説は以下をご参照ください。

 
ステップ1は以上です。

次回はステップ2(ビューの作成)をやります。

本庄マサノリ

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

>> Twitter をフォローする

 

-チュートリアル, 中級