PHPフレームワーク Laravel入門 ch5 データベース

はじめに

MySQLを使用

マイグレーションとシーディング

マイグレーションとは

データベースを扱うスクリプトを実行して、データベースのバージョンを管理してくれる

マイグレーションファイルのメソッド

  • up
    • テーブルを生成する
  • down
    • テーブルを削除する

シーディングとは

データベースのダミーデータ的なやつ

流れ

  • シーダーファイル作成
  • シード追加
  • シーダーファイルの登録
  • シーディング実行

シーダーファイル作成

php artisan make:seeder SampleTableSeeder

シード追加

SampleTableSeeder.php

public function run(){
     $param = [
          'name'=>'makoto',
          'email'=>'makoto@makoto.jp'
     ];

     //table(テーブル名)
     DB::table('sample')->insert($param);

}

シーダーファイルの登録

database\seeds\DatabaseSeeder.php

    public function run()
    {
        //登録
         $this->call(SampleTableSeeder::class);
    }

シーディング実行

php artisan db:seed

実際に動かす。

流れ

  • migrationファイルの作成とテーブル作成
  • controllerに処理を記述
  • Seedファイルの作成と記述
  • seedファイルの登録
  • シーディング実行

migrationファイルの作成とテーブル作成

php artisan make:migration create_people_table

create_people_table

Schema::create('people', function (Blueprint $table) {
     $table->bigIncrements('id');
     $table->string('name');
     $table->string('email');
     $table->timestamps();
});

nameemailを追加してみる。

controllerに処理を記述

indexアクションに記述する

use Illuminate\Support\Facades\DB; //追加

//省略
 public function index(){
        $users = DB::table('people')->get(); //追加

        $data = [
            'msg'=>'フォームを入力してください',
            'users'=>$users
        ];
        return view('form',$data);
    }

$users = DB::table('people')->get();は、peopleテーブルからデータ取得して$usersに入れる

ちなみに 参照するbladeファイルに追記(データベースに登録されたユーザ名とemailを表示)

※現実世界ならやばい。。

xx.blade.php

<table>
    <tr><th>name</th><th>email</th></tr>
    @foreach($users as $user)
        <tr>
            <td>{{$user->name}}</td>
            <td>{{$user->email}}</td>
        </tr>
    @endforeach
</table>

Seedファイルの作成と記述

シーダーファイル作成

php artisan make:seeder PeopleTableSeeder

PeopleTableSeeder.php

public function run(){
     $param = [
          'name'=>'makoto',
          'email'=>'makoto@makoto.jp'
     ];

     DB::table('people')->insert($param);

}

seedファイルの登録

DatabaseSeeder.php

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

シーディング実行

php artisan db:seed

取得できてる f:id:makoo5:20190807190735p:plain