すくまりのメモ帳すくまりのメモ帳
← 記事一覧に戻る

【Laravel】XAMPPを使ったMySQLデータベース接続の接続方法

2019-09-25
【Laravel】XAMPPを使ったMySQLデータベース接続の接続方法

はじめに

この記事では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というフォルダを作成しました。

composer create-project laravel/laravel --prefer-dist LaravelPractice

phpMyAdminでデータベースの作成

以下のサイトを見ながら、適当なデータベースとテーブル、カラムを作成してください。

今回は、

データベース名:laravel_practice
テーブル名:people

で作成しました。

phpMyAdminを使ったサンプルデータベースの作成

サイトの接続確認

まずはXAMPPで接続できるか試してみましょう。

Laravelが入ったフォルダをxampp/htdocsの中に入れてください。xamppのフォルダはデフォルトだとCの下にあります。

次に「http://localhost/LaravelPractice/public/ 」にアクセスしてください。LaravelPracticeの部分は各自Laravelのテンプレート用に作成したフォルダの名前が入ります。

以下の画面が表示されれば接続テストは完了です。

Bladeを使ったページの作成

LaravelPractice/resources/views内に「test.blade.php」というファイルを作成してください。

test.blade.phpに以下のコードを入力してください。nameやmailといった変数名は各自作成したテーブル内のカラム名を指定してください。

<!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まで移動し、以下のコマンドを実行してください。

php artisan make:controller TestController

LaravelPractice/app/Http/Controllers/TestController.phpが生成されるので、開いて以下のコードに書き換えてください。

<?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に

use Illuminate\Support\Facades\DB;

を追加するのがポイントです。

今回はSQL文でpeopleテーブルの値を全て取得します。

web.phpのRouteを編集

LaravelPractice/routes/web.phpを開き、以下のコードを追加してください。

Route::get('test', 'TestController@index');

これで、http://localhost/LaravelPractice/public/testに接続したときに、TestControllerのindexが実行されます。

.envファイルを編集

LaravelPractice/.envファイルを開き、DB_CONNECTIONなどを以下の設定に変更してください。phpMyAdminでユーザー名やパスワードを設定している場合は適宜変更してください。

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を開き、以下の部分を確認してください。

'default' => env('DB_CONNECTION', 'mysql'),
'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へ移動し、以下のコードを実行してからページを更新してください。

php artisan config:cache

スーパーリロードする

CSSなどが反映されないときは「Shift + F5」を押してスーパーリロードしてください。

XAMPPを再起動する

XAMPPを停止して、ブラウザを再起動してください。

以上3つを試してもエラーが消えない場合はコードが間違ってないか今一度確かめてください。

これで、XAMPPを使ったLaravelでのデータベース接続方法の紹介を終わります。

トップページへ戻る