【Laravel】データベース:MySQLへの接続方法
2023.09.09 /
本記事ではJavaScriptフレームワークのLaravelにおける、データベースであるMySQLへの接続方法について解説していきます。
ECサイトやログイン機能を有したWebアプリケーションでは必ずデータベースが必要となります。現代利用されているシステムを構築する上でデータベースは必須要素の一つです。
LaravelからデータベースのMySQLに接続する方法について、本記事を通して理解を深めてください。
データベース
データベースとは
データベースとは大量の「データ」を蓄積し、いつでも・好きなときに・簡単にデータを利用可能なシステムです。現在のほとんどのシステムでデータベースが利用されています。
データベースはデータの保存ができるたけでなく、クエリ操作によるデータの検索・更新・追加・削除を可能にします。
Webアプリケーションにおいては必須要素の一つであり、システムの中核を担う存在です。データベースについて詳しくは以下記事をご参照ください。
データベースとは?機能と特徴(SQLite、MySQL、TinyDB)
DBMSとは
DBMS(Database Management System)はデータベースの作成・操作・管理を行い、データベースの整合性確保やセキュリティ・パフォーマンを向上させるシステムです。
SQLによるCRUD操作(Create、Read、Update、Delete)が実行でき、データベース内のデータを効率的に操作できます。
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(モデル)がデータベースにアクセスして、データの取得・保存・更新・削除を担っています。
MVCモデルとはアプリケーション開発で必要となる処理をモデル(Model)、ビュー(View)、コントローラー(Controller)の3つに分類して開発する手法です。これにより開発効率や保守性を高めています
ここではモデルがデータベースとつながりを持つ前段階である、Laravelでデータベース(MySQL)に接続する方法を解説します。
環境構築
端末にLaravelが利用できる環境でない場合は以下記事を参考にしてComposerおよびLaravelをインストールしてください。
【Laravel】Windowsにインストールして開発環境を構築する方法
データベースとして本記事ではMySQLを利用します。こちらに関しても端末にインストールしている必要があります。XAMPPをインストールすることでMySQLとPHPが利用可能になりますので、XAMPPの利用をお勧めしています。
【PHP】XAMPPのインストール方法と操作方法【初心者用】
MySQLにデータベースとユーザーを作成する
MySQLにデータベースおよびユーザーを作成していきます。ここでは初めてMySQLに接続すること・XAMPPの利用を想定して解説しています。
まずは以下の操作でShell画面を表示します。
- XAMPPを起動し、MySQLの「Start」をクリックする
- 画面右側の「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;
.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にはデータベースのテーブル作成などで利用できるマイグレーション機能が備わっています。マイグレーションとはデータベースのスキーマを管理するためのツールです。
データベースのスキーマとはデータベースの構造を意味します。「データベースの設計図」と考えるとわかりやすいと思います
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が接続できていることも確認できました。