今回は、Laravel でデータベースを利用するための設定方法や、テーブル・レコードの作成方法を解説していきます。
参考書
SQLite データベースのインストール
laravel では、MySQL や PostgeSQL などのデータベースに標準で対応していますが、今回は一番導入が簡単な「SQLite」を使用します。
Windowsユーザーはまずインストールを行いましょう。
(macOS を使用している場合は標準でSQLite が組み込まれているためインストールの必要はありません。)
https://www.sqlite.org/download.html
「Precompiled Binaries for Windows」という項目から、使用しているOSに合わせたファイルをダウンロードします。
(64 bit Windows を使っている場合は「64-bit DLL (x64) for SQLite version xxx.」)

ダウンロードしたファイルを展開すると、「sqlite3.dll」というファイルがありますので、それを「Windows/system32」フォルダの中に入れてください。
これで SQLite が使えるようになります。
設定ファイルの修正
では、SQLiteを使用するためにファイルの設定を修正していきます。
「config/database.php」を開き、以下の個所を変更しましょう。
'default' => env('DB_CONNECTION', 'mysql'),
↓
'default' => env('DB_CONNECTION', 'sqlite'),
続いて「.env」を開き、以下の個所を変更しましょう。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravelsample
DB_USERNAME=root
DB_PASSWORD=
↓
DB_CONNECTION=sqlite
DB_HOST から DB_PASSWORD までは、SQLite では使用しないため削除して大丈夫です。
データベースの作成
データベースを作るには、「マイグレーション」でテーブルを作成し、「シーディング」で初期状態で入れておくレコードを追加します。
マイグレーションファイルの作成
まずコマンドラインで以下を実行します。
php artisan make:migration create_people_table
すると、「database/migrations」というフォルダの中にマイグレーションファイルが生成されます。
マイグレーションファイルには、作成した日時がファイル名の先頭につけられているので、今作ったものを開きましょう。
すると、デフォルトで以下のように書かれています。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePeopleTable extends Migration
{
public function up()
{
Schema::create('people', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('people');
}
}
up メソッドには、テーブルを生成するための処理を書きます。
ここに必要なカラムを追加します。
down メソッドには、テーブルを削除するための処理を書きます。
up メソッド
では、up メソッドを修正しカラムを追加します。
public function up()
{
Schema::create('people', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('mail');
$table->integer('age');
$table->timestamps();
});
}
テーブルの作成は、以下のように定義します。
Schema::create('テーブル名', function (Blueprint $table) {
テーブル作成の処理
});
そして、カラムの設定は以下のように定義します。
$table->型('フィールド名');
プライマリーキーは、 $table->increment( フィールド名 ); とすることで、自動的に整数値が割り当てられます。
timestamps メソッドは、作成日時と更新日時を補完するフィールドを自動設定することができます。
これを実行すると、created_at と updated_at という2つの dateTime 型フィールドが設定されます。
down メソッド
down メソッドには、デフォルトで以下のように書かれています。
public function down()
{
Schema::dropIfExists('people');
}
Schema::dropIfExists(‘テーブル名’); とすると、指定した名前のテーブルがあった場合は削除し、なければなにもしません。
Schema::drop(‘テーブル名’); とすると、指定した名前のテーブルを削除し、テーブルがない場合はエラーになります。
今回はデフォルトのままにします。
マイグレーションの実行
まずデータベースファイルを作成するため、コマンドを実行します。
macOS の場合は以下を実行します。
touch database/database.sqlite
windows の場合は以下を実行します。
New-Item database/database.sqlite -ItemType file
これでデータベースファイルが作成されますので、マイグレーションを実行します。
php artisan migrate

このように表示されればOKです。
シーダーファイルの作成
では続いてシーディング処理を見ていきましょう。
まずは、以下のコマンドを実行してシーダーファイルを作ります。
php artisan make:seeder PeopleTableSeeder
作成したファイルは、「database/seeds」の中に入っています。
これを開くと、デフォルトで以下のように記述されています。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class PeopleTableSeeder extends Seeder
{
public function run()
{
//
}
}
この run メソッドにシーディング処理を記述します。
今回は以下のようにします。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;//追加
class PeopleTableSeeder extends Seeder
{
public function run()
{
$params = [
'name' => 'yamada',
'mail' => 'yamada@sample.com',
'age' => 56,
];
DB::table('people')->insert($params);
$params = [
'name' => 'tanaka',
'mail' => 'tanaka@sample.com',
'age' => 28,
];
DB::table('people')->insert($params);
$params = [
'name' => 'suzuki',
'mail' => 'suzuki@sample.com',
'age' => 35,
];
DB::table('people')->insert($params);
}
}
ご覧のように、DB::table->insert でレコードを追加しています。
(このあたりについては、次回の記事で詳しく解説します)
シーダーファイルの登録
「database/seeds」の中の「DatabaseSeeder.php」を開き、今つくったシーダーファイルを登録します。
run メソッドを以下のように書くだけです。
public function run()
{
$this->call(PeopleTableSeeder::class);
}
これで、シーディング処理に必要な記述は完成しました。
以下のコマンドを使ってシーディング処理を実行します。
php artisan db:seed
あとは、テーブルとレコードが作成されているかブラウザで確認するために、テンプレートとコントローラを編集しましょう。
//テンプレート
@section('content')
<table>
<tr><th>名前</th><th>メールアドレス</th><th>年齢</th></tr>
@foreach ($people as $person)
<tr><td>{{$person->name}}</td><td>{{$person->mail}}</td><td>{{$person->age}}</td></tr>
@endforeach
</table>
@endsection
//コントローラ
use Illuminate\Support\Facades\DB;//追加
class SampleController extends Controller
{
public function index(Request $request)
{
$people = DB::table('people')->get();
return view('sample.index', ['people'=>$people]);
}
}
DB::table(‘people’)->get(); で、テーブルの全レコードを取得しています。
(このあたりについては、次回の記事で詳しく解説します)
ブラウザで確認すると、以下のように表示されます。

無事にテーブルとレコードが作成されていることが確認できました。
今回は以上になります。
ご覧いただきありがとうございました(^^)
参考書
続きはこちら↓
コメント