【Laravel 入門】データベースの作成方法(SQLite)

Laravel

今回は、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(); で、テーブルの全レコードを取得しています。

(このあたりについては、次回の記事で詳しく解説します)


ブラウザで確認すると、以下のように表示されます。

無事にテーブルとレコードが作成されていることが確認できました。




今回は以上になります。
ご覧いただきありがとうございました(^^)


参考書


続きはこちら↓

コメント

コンタクトフォーム

    タイトルとURLをコピーしました