【Laravel チュートリアル】タスク管理アプリ開発:データベース作成

icon by Icons8

PHPのフレームワークLaravelのチュートリアルとして、タスク管理アプリを開発する手順をまとめていきます。Gitを使ったバージョン管理も行なっていきます。

今回はmigrationファイルを作成し、アプリケーションで利用するデータベースの作成をします。

作成するテーブル

id -> int, auto_increment
title -> string
contents -> text, null許可
created_at ->timestamp
updated_at ->timestamp

個人で利用するタスク管理アプリをイメージしています。
そのため、ログイン機能は無く、ユーザーとタスクの紐付けも考慮しておりません。

migrationファイルを作成する

「tasks」というDBテーブルを作るためのmigrationを作成します。

// <migrationファイル名>は変更してください。
$ php artisan make:migration <migrationファイル名>

// 今回、migrationファイル名は「create_tasks_table」とする
$ php artisan make:migration create_tasks_table

database/migrations配下にxxxx_xx_xx_xxxxxx_create_tasks_table.phpというファイルができていればOKです🙌
※xxxxの部分はファイルが作成された日時が記載されます。

migrationファイルを修正する

public function up()
{
    Schema::create('tasks', function (Blueprint $table) {
        $table->bigIncrements('id');
    // 以下を追加する
        $table->string('title');
        $table->text('contents')->nullable();
    // ここまで
        $table->timestamps();
    });
}

Laravel ver5.4以上、MySQL ver5.7.7以下をご利用の方向け

Laravel5.4から標準charasetがutf8mb4に変わっています。
またMySQLではPRIMARY_KEYおよびUNIQUE_KEYを付けたカラムには最大767bytesまでしか入りません。
※MySQL ver5.7.7以降だと解消されているようです

対策として、カラムの最大値を変更し、767bytes以上の文字列が入らないようにします。app/Providers/AppServiceProvider.phpに以下を追加してください。

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

データベースを作成する

// mysqlを起動する
$ mysql.server start

// mysql内に入る
$ mysql -u root -p

// パスワードを入力後、データベースを作成する
mysql> CREATE DATABASE <database名>;

// 今回は「taskapp」というデータベースを作成します。
mysql> CREATE DATABASE taskapp;

// 作成されていることをデータベース一覧で確認
mysql> show databases;

「taskapp」というデータベース名が一覧の中に表示されていればOKです🙌
※MySQLから抜け出す時にはexitと入力してください。

.envに情報を追加する

// .envに対象のDB名を追記してください
DB_DATABASE=taskapp

※ 環境変数はキャッシュに保存されて、変更が反映されない場合があります。こちらの記事を参考にキャッシュを削除してみてください。

環境変数の変更が反映されない時の対策

テーブルを作成する

// MySQLから抜け出し、コマンドを実行する
$ php artisan migrate

Migrating: xxxx_xx_xx_xxxxxx_create_tasks_table
Migrated: xxxx_xx_xx_xxxxxx_create_tasks_table
ターミナル上で、上記のような表示がされればOKです🙌

データベースにデータを追加する

// mysql内に入る
$ mysql -u root -p

// パスワードを入力後、データベースを選択する
mysql> use taskapp;

// 2つのデータを追加する
mysql> insert into tasks (title, contents) values ('会議の資料を作る', '来週の打ち合わせの資料を作成する');
mysql> insert into tasks (title, contents) values ('見積書作成', 'お客様へ提案する書類を準備する');

// データが追加されていることを確認する
mysql> select * from tasks;

2つのデータが追加されていればOKです🙌

Modelを作成する

// Modelの作成
$ php artisan make:model Task

appディレクトリ配下にTask.phpというファイルが追加されていればOKです🙌

終了🙌

git status コマンドで修正されたファイルが表示されているかを確認してください。

git addgit commitを実行してローカルリポジトリに登録し
git pushでリモートリポジトリへ更新履歴を登録してください。