今回は、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クラスで事足りると思います。











