はじめに
この記事ではXAMMPを使ってphpMyAdminのMySQLからデータを取得する方法を紹介します。
公式ドキュメントや参考書の中で、VirtualBox使った仮想環境でhomesteadのDBに接続したり、SQLite3を使った方法などが紹介されていたのですが、XAMPPを使った方法はあまりなく、一番手軽だったので説明していきます。
動作環境
- Windows10
- Laravel 5.8
- XAMPP v3.2.3
- PHP 7.3.5
LaravelでXAMPPを使ったデータベースの接続方法
XAMPPのインストール
以下の記事を参考にしながら、Apache と MySQLをStartさせるところまで進めてください。
今さら聞けない!XAMPPをインストールする方法【超初心者向け】
Laravelテンプレートのインストール
以下のサイトを参考にしてComposerを使ってLaravelのテンプレートをインストールしてください。
導入手順を解説!Laravelのインストール方法【初心者向け】
私は以下のコマンドでLaravelPracticeというフォルダを作成しました。
1 |
composer create-project laravel/laravel --prefer-dist LaravelPractice |
phpMyAdminでデータベースの作成
以下のサイトを見ながら、適当なデータベースとテーブル、カラムを作成してください。
今回は、
データベース名:laravel_practice
テーブル名:people
で作成しました。
サイトの接続確認
まずはXAMPPで接続できるか試してみましょう。
Laravelが入ったフォルダをxampp/htdocsの中に入れてください。xamppのフォルダはデフォルトだとCの下にあります。
次に「http://localhost/LaravelPractice/public/ 」にアクセスしてください。LaravelPracticeの部分は各自Laravelのテンプレート用に作成したフォルダの名前が入ります。
以下の画面が表示されれば接続テストは完了です。
Bladeを使ったページの作成
LaravelPractice/resources/views内に「test.blade.php」というファイルを作成してください。
test.blade.phpに以下のコードを入力してください。nameやmailといった変数名は各自作成したテーブル内のカラム名を指定してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <table> <tr><th>Name</th><th>Mail</th><th>Age</th></tr> @foreach ($items as $item) <tr> <td>{{$item->name}}</td> <td>{{$item->mail}}</td> <td>{{$item->age}}</td> </tr> @endforeach </table> </body> </html> |
Controllerの作成
コマンドプロンプトを開き、cd で LaravelPracticeまで移動し、以下のコマンドを実行してください。
1 |
php artisan make:controller TestController |
LaravelPractice/app/Http/Controllers/TestController.phpが生成されるので、開いて以下のコードに書き換えてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class TestController extends Controller { public function index(){ $items = DB::select('select * from people'); return view('test',['items' => $items]); } } |
useでnamespaseに
1 |
use Illuminate\Support\Facades\DB; |
を追加するのがポイントです。
今回はSQL文でpeopleテーブルの値を全て取得します。
web.phpのRouteを編集
LaravelPractice/routes/web.phpを開き、以下のコードを追加してください。
1 |
Route::get('test', 'TestController@index'); |
これで、http://localhost/LaravelPractice/public/testに接続したときに、TestControllerのindexが実行されます。
.envファイルを編集
LaravelPractice/.envファイルを開き、DB_CONNECTIONなどを以下の設定に変更してください。phpMyAdminでユーザー名やパスワードを設定している場合は適宜変更してください。
1 2 3 4 5 6 |
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_practice DB_USERNAME=root DB_PASSWORD= |
database.phpファイルの編集
LaravelPractice/config/database.phpを開き、以下の部分を確認してください。
1 |
'default' => env('DB_CONNECTION', 'mysql'), |
1 2 3 4 5 6 7 8 |
'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), |
これで設定は完了です。
テストページの確認
http://localhost/LaravelPractice/public/test に接続すると、以下の画面が表示されると思います。
うまく表示されなかった場合
キャッシュを消す
Laravelでは.envファイルの変更が反映されていないことがよくあります。
コマンドプロンプトのcd でLaravelPracticeへ移動し、以下のコードを実行してからページを更新してください。
1 |
php artisan config:cache |
スーパーリロードする
CSSなどが反映されないときは「Shift + F5」を押してスーパーリロードしてください。
XAMPPを再起動する
XAMPPを停止して、ブラウザを再起動してください。
以上3つを試してもエラーが消えない場合はコードが間違ってないか今一度確かめてください。
これで、XAMPPを使ったLaravelでのデータベース接続方法の紹介を終わります。