今回は、LaravelでMySQLを利用するための設定や、実装方法をメモしたいと思います。
※ORMの内容は含まれていません。
Laravelプロジェクトは、以下の要領で作成済みの前提でメモさせて頂きます。
目次
参考
・Laravel 7.x データベース:利用開始
https://readouble.com/laravel/7.x/ja/database.html
database.php デフォルト データベース設定
/プロジェクトフォルダ/config/database.phpに、データベースに関する設定が記述されています。
まずは、defaultがMySQLになっていることを確認します。
※他のDBを利用する場合には、こちらの指定を変更する必要があります。
database.php MySQL設定
次に、mysqlの接続情報を指定します。
‘mysql’ => の内容が接続情報の指定になります。
以下の記事の通りMANPにてMySQLを整備した場合、
最低限以下を設定することで接続可能になりました。
- DB_HOST
- DB_PORT
-
DB_DATABASE
-
DB_USERNAME
-
DB_PASSWORD
.env データベース設定
database.php以外にも、/プロジェクトフォルダ/.envというファイルに、
設定箇所がありますので、そちらも修正を行います。
テンプレート作成
設定系の作業が済んだら実装に移ります。まず、テンプレートを作成します。
データを抽出できていることを確認したいので、テーブルタグで表示します。
showUser.blade.php
<html> <head> <title>ユーザーデータ</title> <style type="text/css"> th { background-color:blue; color:fff; padding:2px 10px;} td { border:solid 2px; color:999; padding:2px 10px;} </style> </head> <body> <div>UserData</div> <table> <tr> <th>id</th> <th>name</th> </tr> @foreach($user_data as $user) <tr> <td>{{$user->id}}</td> <td>{{$user->name}}</td> </tr> @endforeach </table> </body> </html>
コントローラー作成
テンプレートを表示させるためのコントローラーを実装します。
DBクラスを利用してSELECT文を実行します。
・SQLクエリ 実装
SQL平文で実装する場合、以下の様に指定します。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class dbTestController extends Controller { public function selectUserData(Request $request) { if ($request->id > 0) { $user_data = DB::select('SELECT * FROM user WHERE id='.$request->id); } else { $user_data = DB::select('SELECT * FROM user'); } $data = [ 'id'=> $request->id, 'user_data'=> $user_data, ]; return view('dbTest.showUser', $data); } }
・クエリビルダ 実装
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class dbTestController extends Controller { public function selectUserData(Request $request) { if ($request->id > 0) { $user_data = DB::table('user')->where('id', $request->id)->get(); } else { $user_data = DB::table('user')->get(); } $data = [ 'id'=> $request->id, 'user_data'=> $user_data, ]; return view('dbTest.showUser', $data); } }
ルーティング設定
最後に、URLの割当を実装します。
コントローラーの部分で触れました通り、
idをURLパラーメータに含めてコントローラーに渡したいので、
dbTest/{id?}という形式にすることで、任意のパラメータ(id)を指定できる様に実装します。
※パラメータを必須にする場合?を除いたdbTest/{id}という形式で指定します。
挙動確認
簡易ビルトインサーバーを立ち上げるなどして、挙動確認を行います。
php artisan serve
まずは、idをURLパラメータに指定せずに、ブラウザで確認します。
次に、idを指定して確認します。
今回のメモ内容は以上となります。
DBクラスを利用すれば、SQLクエリ・ビルドクエリのどちらでも実装できます。
細かなDBアクセス方法を実装したい場合には、ORMを利用した方が良さそうですが、
簡単なDBアクセスのみであれば、DBクラスで事足りると思います。