laravel5で顧客管理webアプリを作成したのでメモの続きです。
laravelの便利なデータベースバージョン管理マイグレーションを利用し、テーブルの作成を行います。
#データベースの接続
##.envの設定
データベースの接続のために.envファイルを編集します。DB_CONNECTION以下、データベースの環境に合わせて記述してください。今回はテストのためユーザー、パスワードをrootとしています。
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に以下のように追記しましょう。
....
'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は・・
<?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
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テーブルが作成されるはずです。