[Laravel] SQLiteデータベースを使用する

データベースのセットアップ

データベースファイルの配置

SQLiteデータベースファイルはdatabaseフォルダー内に作成します。

拡張子は.sqliteとします(.gitignore内の記述に合わせます)。

複数形の名前を付けたテーブル(例:users)を作成します(単数形の名前を付けたモデル(例:User)と自動的に関連付けるため)。

.envファイルの書き換え

  • データベースの接続設定はconfig/database.phpに記載されており、各項目が以下のようにenv関数で定義されています。

例:'host' => env('DB_HOST', '127.0.0.1')

  • DB_HOST等の定数は(phpdotenvライブラリに基づき).envファイルで定義されています。
  • env関数では、まず.envファイル内のDB_HOSTの設定値が読み込まれ、設定値がなければ127.0.0.1が使用されます。

.envファイル内の「DB_CONNECTION=mysql」を「DB_CONNECTION=sqlite」に変更し、それ以降の「DB_」で始まる行を「#」でコメントアウトします。

database.phpファイルの書き換え

database.phpファイル内の既定のデータベースファイル名「database.sqlite」を実際のファイル名に変更します。

php artisan migrate:status」コマンドを実行し、「Migration table not found.」と表示されることを確認します。

注:「could not find driver」エラーが発生した場合は、php.iniファイルで「;extension=pdo_sqlite」のコメントアウト文字「;」を削除します。

データベースの操作

コントローラーを作成します。

php artisan make:controller HogeController.php

web.php(Laravel 8.x以上の場合)

use App\Http\Controllers\HogeController;

Route::get('/piyo/', [HogeController::class, 'fuga']);

モデルを使用する方法(推奨)

モデル(単数形で命名)を作成します。

Laravel 8.x以上の場合

php artisan make:model User

Laravel 7.x以下の場合(既定ではModelsフォルダーが存在しないため、手動で作成)

php artisan make:model Models/User

app/Models/User.phpが作成され、親クラスModelのメソッドを使用できるようになります。

app/Models/User.php

(非推奨)テーブル名がモデル名の複数形に対応していない場合は、以下のように明示的にテーブル名を指定します。

protected $table = "original_table_name";

HogeController.php

use App\Models\User;

class HogeController extends Controller
{
    public function fuga() {
        $records = User::all();
        // 処理を記述
    }
}

この例では、Userモデルに自動的に関連付けられたusersテーブルを、Modelクラスのallメソッドで操作しています。

モデルを使用しない方法(非推奨)

HogeController.php

use Illuminate\Support\Facades\DB;

class HogeController extends Controller
{
    public function fuga() {
        $records = DB::select("SELECT * FROM table_name");
        // 処理を記述
    }
}