laravel データベースの接続、マイグレーションによるテーブル作成

[laravel5で顧客管理webアプリを作成したのでメモ](http://qiita.com/ryo2132/items/769968fcf28a7333eda6)の続きです。

laravelの便利なデータベースバージョン管理マイグレーションを利用し、テーブルの作成を行います。

#データベースの接続

##.envの設定
データベースの接続のために.envファイルを編集します。DB_CONNECTION以下、データベースの環境に合わせて記述してください。今回はテストのためユーザー、パスワードをrootとしています。

```text:.env

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=8889
DB_DATABASE=test_db
DB_USERNAME=root
DB_PASSWORD=root

```

##ソケットの追記（MAMPのmysqlに接続する場合)
MAMPのmysqlに接続する場合は.env以外にもconfig/database.phpにソケットの設定が必要です。database.phpに以下のように追記しましょう。

```php:database.php
....
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
            // 追記 ↓
            'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
        ],
    ],
....
```
kei4eva4さんの投稿[LaravelでMAMPのMySQLに接続する](http://qiita.com/kei4eva4/items/480448b83df25774fc74)を参考にさせて頂きました。



#マイグレーションの設定

##マイグレーション作成
artisanよりマイグレーションファイルを作成できます。
今回は、患者情報を管理するpatient_list、来院履歴を管理するhistory_listを作成します。

```
$php artisan make:migration create_patient_list_table  --create=patient_list
```
```
$php artisan make:migration create_history_list_table  --create=history_list
```

##テーブル構造の作成
app/database/migrationsにタイムスタンプのついたcreate_patient_list_tableとcreate_history_listが作成されますので、データを以下のように編集します。

patient_list_table.phpは・・

```php:create_patient_list_table
<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePatientListTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('patient_list', function (Blueprint $table) {
            $table->integer('id')->increments();
            $table->string('name1',40);
            $table->string('name2',40);
            $table->string('sex',4);
            $table->date('birthdate');
            $table->integer('phone_num');
            $table->integer('zip');
            $table->string('address',100);
            $table->string('ad',20);
            $table->string('experience',4);
            $table->date('firstday');
            $table->text('memo');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('patient_list');
    }
}

```

history_list_table.phpは・・・

```php:create_history_list_table.php
<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateHistoryListTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('history_list', function (Blueprint $table) {
            $table->increments('code');
            $table->date('history_date');
            $table->integer('id');
            $table->string('name',40);
            $table->integer('sales');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('history_list');
    }
}

```
Migrationを継承したクラスの中で、upメソッドとdownメソッドの二つを定義しています。upメソッドはテーブルの作成、カラムの追加等テーブルを編集する処理を、downメソッドはそれを戻す処理を記載します。今回はSchemaファサードのcreateメソッドで新たにテーブルの作成を定義しています。$table->ごとがワンカラムを示し各カラムの情報を表しています。

```
$table->integer('id')->increments();
```
上記patient_list_table.phpの場合は、auto-incrementsのint型の「id」カラムを作成するという指示です。
その他、詳細については[マイグレーションの日本語リファレンス](https://readouble.com/laravel/5/1/ja/migrations.html)のカラムタイプをご確認ください。

##マイグレーションの実行（テーブルの作成）

ターミナルで下記コマンドを入力してください。

```
$ php artisan migrate
```
エラーがでなければtest_dbデータベースにpatient_listとhistory_listテーブルが作成されるはずです。