LoginSignup
14
18

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-08-05

laravel5で顧客管理webアプリを作成したのでメモの続きです。

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

データベースの接続

.envの設定

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

.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に以下のように追記しましょう。

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に接続するを参考にさせて頂きました。

マイグレーションの設定

マイグレーション作成

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は・・

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は・・・

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」カラムを作成するという指示です。
その他、詳細についてはマイグレーションの日本語リファレンスのカラムタイプをご確認ください。

マイグレーションの実行(テーブルの作成)

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

$ php artisan migrate

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

14
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
18