【laravel】SQLiteの利用方法について
本日は、SQLiteを利用してデータを取得し、画面に表示させるところまで解説したいと思います。基本的なやり方はLaravel入門に書いてある通りに進めます。
1.DB Browserでデータベースファイルを作成する
まずはDB Browserを使用してdatabase.sqliteを作成し、そのファイルをdatabeseフォルダの直下に格納します。
詳しい方法は書籍の通りなので、ここでは割愛します。
2.テーブルを作成する
次にテーブルを作成します。個人アプリEravelではいくつかのテーブルを作成するつもりですが、まずはcurriculumsテーブルを作成します。
curriculumsテーブル
- id INTEGER PRIMARY KEY AUTOINCREMENT
- name TEXT NOT NULL
idがプライマリーキーで、自動的に値を1づつ増やしながら設定させるようにします。
nameは空の状態を禁止にします。
テーブルを作成したら初期データをDB Browserから追加します。
3.SQLiteを利用するための設定を行う
次にlaravelからSQLite を利用できるように設定を行います。
まずはconfig/database.phpです。
database.php
<?php use Illuminate\Support\Str; return [ #省略 'default' => env('DB_CONNECTION', 'sqlite'), #sqliteに変更 #省略 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'url' => env('DATABASE_URL'), 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), ], 'mysql' => [ #省略 ], 'pgsql' => [ #省略 ], 'sqlsrv' => [ #省略 ], #省略 ], ];
今回はSQLiteを使うのでdefaultの部分を変更します。それ以外の変更はありません。
次に.envを修正します。laravel入門で書いてある通り記述してもDBにアクセスできないため、以下のように修正します。.envはプロジェクトファイルの直下にあります。
.env
#省略
DB_CONNECTION=sqlite # DB_HOST=127.0.0.1 # DB_PORT=3306 # DB_DATABASE=laravel # DB_USERNAME=root # DB_PASSWORD=
#省略
DB_CONNECTIONをsqliteに変更し、それ以外はコメントアウトします。sqliteでは使用しないパラメータだからです。
これでlaravelからSQLiteを利用する準備が整いました。
4.データベースにアクセスし、取得した値を画面に表示する
最後に正しくDBにアクセスできるか確認してみます。
まず、DBにアクセスして値を取得するためにコントローラを作成します。
以下のコマンドで作成できます。
$php artisan make:controller CurriculumController
次に作成したCurriculumControllerにアクションを追加します。今回はindexとします。
ファイルはapp/Http/Controllers/CurriculumController.phpです。
CurriculumController.php
<?php #省略 use Illuminate\Support\Facades\DB; class CurriculumController extends Controller { public function index() { $items = DB::table('curriculums')->get(); return view('curriculum.index', ['items' => $items]); } }
use 〜の部分でDBクラスを利用できるようにします。
DBクラスのtableメソッドとgetメソッドを使って、curriculumsテーブルの全レコードを取得し、$itemsに格納しています。
$itemsの値はviews/curriculumフォルダに格納されたindexファイルに渡されることになります。
では次にindex.blade.phpを作成します。このファイルが実際に画面に表示させる内容を記述するものになります。フォルダはresources/views/curriculumです。curriculumフォルダは自分で作りましょう。
index.blade.php
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Eravel</title> </head> <body> <p>hello Eravel</p> @foreach ($items as $item) <p>{{$item->name}}</p> @endforeach </body> </html>
コントローラから渡されたitemsをforeachで繰り返し表示させています。
この辺りはrailsと似ている部分です。
最後にルートを設定することで、画面に表示させることができます。修正するファイルはroutes/web.phpです。
web.php
<?php Route::get('/', function () { return view('welcome'); }); Route::get('index', 'CurriculumController@index');
これで「http://localhost:8000/index」にアクセスするとCurriculumControllerのindexアクションが動くことになります。
以下のような画面が表示されれば成功です。
おつかれさまでした。これでDBを活用する準備が整いました。
次回はユーザアカウント周りの機能を実装していこうと思います。