Laravelを使ってアプリケーションを構築する際にデータベースが必要になりますが、今回はシンプルですぐに使えるsqliteデータベースを使ってテーブルの作成と確認を行います。

MAC環境で動作確認を行っています。MACはデフォルトでsqliteがインストールされているので、すぐに使用することができます。

sqliteデータベースの作成

touchコマンドを使用して、Laravelインストールディレクトリの下にあるdatabaseディレクトリの中にdatabase.sqliteを作成します。


$ touch database/database.sqlite

ファイル名は、configディレクトリの中のデータベース関連の設定ファイルdatabase.phpファイルのsqliteの設定箇所にdatabase.sqliteが指定されているため、作成するファイル名にdatabase.sqliteを使用しています。


'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
        'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    ],

.envファイルの編集

初期設定ではデータベースはmysqlへの接続が前提になっているので、Laravelインストールディレクトリにある環境変数設定ファイル”.env”を編集します。

【編集前】


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

【編集後】

DB_CONNECTIONの値をmysqlからsqliteに更新して、DB_HOSTからDB_PASSWORDの行は削除します。


DB_CONNECTION=sqlite

php artisan migrateでテーブルの作成

sqliteデータベースの作成、sqliteに関するLaravelの設定が完了したので、テーブルの作成を行います。


laravel $ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table

インストール直後ではmigrationファイルはusers, password_resetsの2つのみなので、上記が表示されればsqliteに2つのテーブルが作成されています。

テーブル作成までの手順等に誤りがある場合は、php artisanを実行すると下記のエラーが発生します。


laravel $ php artisan migrate
   Illuminate\Database\QueryException  : Database (homestead) does not exist. (SQL: PRAGMA foreign_keys = ON;)

sqliteのコマンドによるデータベースの確認

せっかくなので、sqliteのコマンドを使用して、本当にテーブルが作成できているのかを確認してみましょう。作成したdatabase.sqliteのあるdatabaseディレクトリに移動して、sqlite3コマンドでファイルを指定します。接続するとsqliteのバージョンも確認することができます。


database $ sqlite3 database.sqlite 
SQLite version 3.13.0 2016-05-18 10:57:30
Enter ".help" for usage hints.
sqlite> 

.tablesコマンドを実行するとデータベース内に作成されたテーブルを確認することができます。3つのテーブルが作成されています。migrationsテーブルはmigrationファイルの実行履歴を管理するテーブルです。


sqlite> .tables
migrations       password_resets  users  

users, password_resetsはテーブルが作成されているだけで中身が空です。migrationsにはusersとpassword_resetsの履歴が残されているはずなので、確認してみましょう。そのまま実行しても列名が表示されないので、”.headers on”でヘッダーを表示させます。実行するとusers, password_resetsのmigrationの情報を確認することができます。


sqlite> .headers on
sqlite> select * from migrations;
id|migration|batch
1|2014_10_12_000000_create_users_table|1
2|2014_10_12_100000_create_password_resets_table|1