22
32

More than 5 years have passed since last update.

Laravel5 チュートリアル ブログもどきを作る(1) DB設定・マイグレーション

Last updated at Posted at 2018-06-26

はじめに

Laravel のチュートリアルはまだまだ少なく、Qiita にもほとんど無いようなので、今回は Laravel でブログもどきを作るチュートリアルを Qiita に載せていきたいと思います。

1つの記事が長いと、読む方も萎えてしまうので、短く区切り、説明はできるだけコードの中にコメントとして書いていきます。
このチュートリアルでは、Laravel の基本的な機能・使い方しか紹介しませんので、詳細は日本語ドキュメントを読んで、理解を深めて頂くのが良いと思います。

また、記事中に使われているプログラムソースは github に push してありますので、よろしければご利用ください。

想定する読者

この記事は下記の方に読んで頂くことを想定しています。

  • PHPを自由に使いこなせる方
  • 他のフレームワークを使ったことがある方
  • Laravel を使ってみたいなぁと思っている方

環境

今回は vagrant で下記の環境を構築しました。

  • Laravel 5.5
  • CentOS 6.5
  • MySQL 5.6
  • Apache 2.2
  • PHP 7.1

前提

Laravel が動作する環境を構築し、Welcome ページが表示されるところまで設定できているものとします(Laravel 実行環境の準備についても書いて欲しい、という要望があれば別途書きたいと思います)。

Laravel をインストールすると、インストールディレクトリにプロジェクト名と同名のディレクトリが作成されます(例:blog というプロジェクト名なら blog というディレクトリ)。
作成されたディレクトリに移動すると、app ディレクトリや、artisan というファイルがあります。以下、便宜的にこのディレクトリを、Laravel ホームディレクトリと呼ぶことにします。途中に出てくるファイルパスは、特に断りの無い限り、Laravel ホームディレクトリからの相対パスです。

データベースの初期設定

それでは、まずはデータベースの設定からやっていきましょう。

データベースの作成

データベースは、MySQL クライアント等で、普通にSQLコマンドを実行して作成します。
今回は blog という名前のデータベースを作成します。

CREATE DATABASE blog DEFAULT CHARACTER SET utf8

データベースの接続設定

Laravel が、今作成した blog データベースに接続するための設定をします。
Laravel ホームディレクトリにある .envファイルの下記の部分を編集します。
もし、.envファイルが無ければ、.env.exampleファイルをリネームして作成してください。

/.env
DB_CONNECTION=mysql
DB_HOST={接続ホスト名 or IPアドレス}
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME={接続ユーザー名}
DB_PASSWORD={設定したパスワード}

テーブル作成

続いて、記事を保存するためのテーブルを作成します。

テーブルスキーマ

ブログ記事を保存する articles テーブルを、下記のようなスキーマで作成したいと思います。

物理名 論理名 NOT NULL デフォルト 備考
article_id 記事ID int(10) unsigned YES auto_increment, PK
post_date 投稿日 date YES
title タイトル varchar(255) YES
body 本文 text YES
deleted_at 削除日時 timestamp NO NULL 論理削除用カラム
created_at 作成日時 timestamp NO NULL
updated_at 更新日時 timestamp NO NULL

マイグレーションファイルの作成

articles テーブルは Laravel のマイグレーションという機能を使って作成することにします。
Laravel ホームディレクトリに移動して、下記のコマンドを実行します。

php artisan make:model Article --migration

この artisan(アルチザン)というのは、アプリケーション開発において、様々な機能を提供してくれるコマンドです。
今回のように、マイグレーションファイルを作成したり、コントローラークラスを作成したりと様々な機能があります。artisan コマンドを実行するときは、Laravel ホームディレクトリに移動して実行します。artisan については追って紹介していきます。
上記コマンドは、Aritcle モデルクラスを作成すると同時に、マイグレーションファイルも作成するコマンドです。

上記のコマンドを実行すると、database/migrations/{$timestamp}_create_articles_table.php というファイルができていると思うので、それを開き、下記のように編集します。

database/migrations/{$timestamp}_create_articles_table.php
class CreateArticlesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        // Schema::create() の第一引数がテーブル名、第二引数はクロージャーで、中に作成するカラム情報を書いていく
        Schema::create('articles', function (Blueprint $table) {
            $table->increments('article_id');   // auto increment の unsigned INTカラム
            $table->date('post_date');          // DATEカラム
            $table->string('title');            // VARCHARカラム
            $table->text('body');               // TEXTカラム
            $table->softDeletes();              // ソフトデリート(論理削除)用の deleted_at カラム(TIMESTAMP型)
            $table->timestamps();               // created_at と update_at(TIMESTAMP型)カラムの両方を作成
        });
    }

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

up メソッドは、新規テーブル・カラム追加などをするときに実行され、down メソッドは up メソッドの操作を元に戻します。
カラム情報を設定するのに利用する Blueprint クラスのどのメソッドが、どのカラム型に対応しているかは、ドキュメントを参照してください。もちろん、NULL許可の設定や、デフォルト値の設定、インデックスの追加なども可能です。

マイグレーション実行

マイグレーションファイルができたら、Laravel ホームディレクトリに移動し、下記 artisan コマンドでマイグレーションを実行します。

php artisan migrate

実行できたら、実際に articles テーブルが意図通りにできたか確認しましょう。もし、意図した通りにテーブルができていなかったら、最後のマイグレーション操作について、下記コマンドでロールバックできます。

php artisan rollback

ちなみに、このマイグレーション情報(履歴)は、同じDBの migrations テーブルに格納されていくようなので、興味があれば覗いてみるのも良いでしょう。

次回は、ブログ記事を投稿するフォームを作っていきます。

参考リンク

Laravel 日本語ドキュメント

プログラムソース(github)

22
32
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
22
32