Laravel で SQLite を連携してデータベースを使う方法
はじめに
手軽に使えるデーターベースである SQLite と Laravel を連携して使うための方法について手順をまとめました。
Laravel8 をインストール済みの状態を前提にしています。
SQLiteデーターベース連携
データベースファイルを作成
データベースの本体となるファイルを作成する必要がありルートの database
フォルダの中に作るのが分かりやすいです。ファイル名はなんでもいいですが今回は database.sqlite
を作成します。
.env の編集
データベース連携の設定は config/database.php
に書いてあります。
'default' => env('DB_CONNECTION', 'mysql'),
env()
は .env
ファイルを参照するのでそちらを開くとデフォルトで mysql
となっているため sqlite
に変更します。HOSTやPORT情報はコメントアウトでOKです。
DB_CONNECTION=sqlite
#DB_CONNECTION=mysql
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=laravel
#DB_USERNAME=root
#DB_PASSWORD=
sqlite
のデフォルトの設定をみると DB_DATABASE
の環境変数が無ければ database.sqlite
というファイルを見るようになっています。database_path()
は database フォルダの中のファイルを参照します。
'database' => env('DB_DATABASE', database_path('database.sqlite')),
動作確認
ターミナルで以下のコマンドを打つとで接続状況を確認できます。
php artisan migrate:status
Migration table not found.
上記のように表示されたら連携が成功しています。
このようなエラーが出た場合はうまく連携できていません。
SQLSTATE[HY000] [2002] Connection refused
.env の内容が反映されていないことがあるらしいのでコマンドでキャッシュをクリアしてみると解消するかもしれません。
php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
Laravelでテーブル作成(マイグレーション)
マイグレーション
database/migrations/ にあるファイルで定義されている内容を以下のコマンドでデータベースに反映することができます。
php artisan migrate
以下のコマンドで反映を取り消すことも可能です。
php artisan migrate:rollback
Laravel にはマイグレーション履歴を管理するテーブルがあるのでデーベースを手動で変更すると整合性が崩れてしまうので注意しましょう。
以下のコマンドでマイグレーションファイルが反映済みか確認できます。Yes
になっていれば反映済みです。
% php artisan migrate:status
+------+-------------------------------------------------------+-------+
| Ran? | Migration | Batch |
+------+-------------------------------------------------------+-------+
| Yes | 2014_10_12_000000_create_users_table | 1 |
| Yes | 2014_10_12_100000_create_password_resets_table | 1 |
| Yes | 2019_08_19_000000_create_failed_jobs_table | 1 |
| Yes | 2019_12_14_000001_create_personal_access_tokens_table | 1 |
+------+-------------------------------------------------------+-------+
データベース確認
Laravel にはデフォルトでユーザーを管理するためのテーブルを作成するマイグレーションファイルが用意されておりマイグレーションすると users
テーブルが作成されます。
(TablePlus というデータベースクライアントツールを使いました。)
Laravel でデータ取得処理を実装
検証用にコントローラーとルートを作成します。
まずコントローラーを作成して User
モデルからデータ取得するようにします。
php artisan make:controller ExampleController
class ExampleController extends Controller
{
public function index() {
$user = User::find(1);
dd($user->toArray());
}
}
ルートは以下を追加。
use App\Http\Controllers\ExampleController;
Route::get('/example', [ExampleController::class, 'index']);
データベースに検証用データを追加。
サーバーを起動してブラウザからアクセスするとデータベースの値が表示できるはずです。
php artisan serve
まとめ
Laravel と SQLite を連携する方法について解説しました。
小規模なWebアプリであれば Laravel と SQLite で簡単に作ることができそうですね。手間をかけずにデータベースを使いたい方の参考になれば幸いです。
Author And Source
この問題について(Laravel で SQLite を連携してデータベースを使う方法), 我々は、より多くの情報をここで見つけました https://zenn.dev/aono/articles/6b6431a26c936f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol