
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 add
とgit commit
を実行してローカルリポジトリに登録しgit push
でリモートリポジトリへ更新履歴を登録してください。