【Laravel】データベース:MySQLへの接続方法

時計 2023.09.09 / 時計

【Laravel】データベース:MySQLへの接続方法

記事ではJavaScriptフレームワークのLaravelにおける、データベースであるMySQLへの接続方法について解説していきます。

ECサイトやログイン機能を有したWebアプリケーションでは必ずデータベースが必要となります。現代利用されているシステムを構築する上でデータベースは必須要素の一つです。

LaravelからデータベースのMySQLに接続する方法について、本記事を通して理解を深めてください。

データベース

データベースとは

データベースとは大量の「データ」を蓄積し、いつでも・好きなときに・簡単にデータを利用可能なシステムです。現在のほとんどのシステムでデータベースが利用されています。

データベースはデータの保存ができるたけでなく、クエリ操作によるデータの検索・更新・追加・削除を可能にします。

Webアプリケーションにおいては必須要素の一つであり、システムの中核を担う存在です。データベースについて詳しくは以下記事をご参照ください。

DBMSとは

DBMS(Database Management System)はデータベースの作成・操作・管理を行い、データベースの整合性確保やセキュリティ・パフォーマンを向上させるシステムです。

SQLによるCRUD操作(Create、Read、Update、Delete)が実行でき、データベース内のデータを効率的に操作できます。

DBMSには様々な種類がありますが、主要なDBMSは以下の通りです。

主要なDBMS
  • SQLite
  • MySQL/MarinaDB
  • TinyDB
  • Oracle Database(商用)
  • Microsoft SQL Server(商用)

本記事ではDBMSとしてMySQLを利用していきます。

MySQLとは

MySQLとはOracle社が開発・公開しているRDBMSであり、世界的に最も普及している人気のあるDBMSの一つです。

MySQLは無料で公開されており、PHP+MySQLやJava+MySQL、Python+MySQLといった組み合わせで利用されます。

多くの企業から個人まで幅広く利用され、実績も数多くあるDBMSです。低用量のアプリケーションから、大規模なシステムまで幅広く活用できます。

Laravelでデータベース(MySQL)に接続する方法

LaravelではMVCモデルと呼ばれる設計手法を取っており、Model(モデル)がデータベースにアクセスして、データの取得・保存・更新・削除を担っています。

Laravel用語の確認

MVCモデルとはアプリケーション開発で必要となる処理をモデル(Model)、ビュー(View)、コントローラー(Controller)の3つに分類して開発する手法です。これにより開発効率や保守性を高めています

Laravel:処理の流れ

ここではモデルがデータベースとつながりを持つ前段階である、Laravelでデータベース(MySQL)に接続する方法を解説します。

環境構築

端末にLaravelが利用できる環境でない場合は以下記事を参考にしてComposerおよびLaravelをインストールしてください。

データベースとして本記事ではMySQLを利用します。こちらに関しても端末にインストールしている必要があります。XAMPPをインストールすることでMySQLとPHPが利用可能になりますので、XAMPPの利用をお勧めしています。

MySQLにデータベースとユーザーを作成する

MySQLにデータベースおよびユーザーを作成していきます。ここでは初めてMySQLに接続すること・XAMPPの利用を想定して解説しています。

まずは以下の操作でShell画面を表示します。

  1. XAMPPを起動し、MySQLの「Start」をクリックする
  2. XAMPP:MySQLの「Start」をクリック
  3. 画面右側の「Shell」をクリックする
  4. XAMPP:画面右側の「Shell」をクリック

MySQLに接続するために以下ログインコマンドを実行します。XAMPPのインストール直後はユーザー名root、パスワードなしでログインできます。

# mysql -u root -p

ログインに成功したら、次にユーザーをCREATE USERコマンドで作成します。ここではユーザー名をoffice54、パスワードをp@ssw0rdで作成します。

CREATE USER office54 IDENTIFIED BY 'p@ssw0rd';

ユーザーの作成が完了したら、作成したユーザーに権限を付与します。

grant all on *.* to office54@localhost identified by 'p@ssw0rd';

次にCREATE DATABASEコマンドを使ってデータベースを作成します。ここではデータベースexampleを作成します。

CREATE DATABASE example;

データベースが作成されているか以下コマンドを実行して確認しましょう。

SHOW DATABASES;

関連リンク:【PHP/XAMPP】MySQLでデータベースを作成する方法

.envファイルの設定

プロジェクトのルートディレクトリに「.envファイル」があります。.envファイルはLaravelで使用される環境設定ファイルです。

.envファイルにはアプリケーション環境に関する様々な設定が記載されており、データベースの接続変更や開発環境と本番環境の切り替えなどが行えます。

データベースへの接続情報が.envファイルに含まれているため、以下のように各設定値を変更します。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=example
DB_USERNAME=office54
DB_PASSWORD=p@ssw0rd
設定値 説明
DB_CONNECTION データベースの種類(sqliteやmysql)
DB_HOST 接続先ホスト
DB_PORT 接続先ポート番号
DB_DATABASE データベース名
DB_USERNAME ユーザー名
DB_PASSWORD パスワード

.envファイルの変更により、LaravelとMySQLのデータベースとの接続設定は完了です。

マイグレーションの実行

Laravelにはデータベースのテーブル作成などで利用できるマイグレーション機能が備わっています。マイグレーションとはデータベースのスキーマを管理するためのツールです。

IT用語の確認

データベースのスキーマとはデータベースの構造を意味します。「データベースの設計図」と考えるとわかりやすいと思います

Laravelには最初からユーザーテーブルやパスワードリセットテーブルなどのマイグレーションファイルが用意されています。マイグレーションファイルとはテーブルの構造を定義したファイルです。新しいテーブルの作成やカラムの追加・変更・削除といった操作を記述します。

「マイグレーションの実行」を行うことでマイグレーションファイルに記述された操作を実行し、データベースに適用されます。

Laravelとデータベースの接続設定は完了しているので、以下コマンドを実行して「マイグレーションの実行」を行いましょう。

php artisan migrate

すると次のような表示が出てきます。これはフレームワークが最初から持っていたマイグレーションファイルにより4つのテーブルが作成されたことを意味します。

   INFO  Preparing database.

  Creating migration table ................................................................................. 42ms DONE

   INFO  Running migrations.

  2014_10_12_000000_create_users_table ..................................................................... 82ms DONE
  2014_10_12_100000_create_password_resets_table ........................................................... 54ms DONE
  2019_08_19_000000_create_failed_jobs_table ............................................................... 24ms DONE
  2019_12_14_000001_create_personal_access_tokens_table .................................................... 35ms DONE

では実際にデータベースにテーブルが作成されているか見てみましょう。MySQLにログインしたらuseコマンドでデータベースを指定します。

use example;

exampleデータベースにあるテーブルをSHOWコマンドで確認します。

show tables;

+------------------------+
| Tables_in_example      |
+------------------------+
| failed_jobs            |
| migrations             |
| password_resets        |
| personal_access_tokens |
| users                  |
+------------------------+
5 rows in set (0.001 sec)

フレームワークに容易されている4つのテーブルが追加されていることがわかります。これより問題なくデータベースにLaravelが接続できていることも確認できました。