データベースのセットアップ
データベースファイルの配置
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");
// 処理を記述
}
}
#Laravel #SQLite #データベース