フレームワーク

LaravelでDB(MySQL)へ接続し、データを取得する

フレームワーク

DBへ接続

あらゆるシステムにおいて、画面に入力したデータをDBへ追加したり、DBから必要なデータを取得して画面に表示したりと、DBは欠かせない存在です。システム開発の際は、システムを構築するプログラミング言語(PHP等)を用いてDB(MySQL等)へ接続します。

MVCモデルで開発を行う際に、Modelの部分でDBを操作しています。ModelでDBから値を受け取り、Controllerを経由して画面へ送られます。

※MVCモデルは以下記事で解説しています。
MVCモデルとは?フレームワークを使う前に知っておきたい!

フレームワークには、DBを扱うためのクラスや設定が用意されており、誰でも簡単にDBへ接続して、操作を行えます。
今回は、LaravelでローカルのDB(MySQL)を扱う方法を紹介します。

DB接続

DB接続するためには、主に「ホスト、ポート、DB名、ユーザ名、パスワード」が必要になります。Laravelは、これらの設定を「.env」というファイルの中に環境変数として記載してあります。この環境変数の中身を自分の接続したいDBの情報に書き換えます。

環境変数概要
DB_CONNECTIONデータベースの種類
DB_HOST接続先のホスト
DB_PORT接続先のポート
DB_DATABASEデータベース名
DB_USERNAMEユーザー名
DB_PASSWORDパスワード

ローカルのDB(MySQL)へ接続する場合は、基本的に設定を変えなくて大丈夫です。
データベース名とパスワード(設定していれば)を変更するだけで、「.env」の設定は完了です。
sampleというデータベースへ接続したい場合は以下になります。(パスワードは未設定)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sample
DB_USERNAME=root
DB_PASSWORD=

今回は、sampleというデータベースを作成し、usersというテーブルを作成してください。
usersテーブルの中身は何でも良いですが、idのカラムは作成してください。
適当にデータを入れておくと、この記事をスムーズに読むことが出来ます。

Modelの作成

DB接続の準備が出来たら、Modelを作成します。Laravelの場合、Modelのクラス名をDBのテーブル名の単数形に指定することで、勝手に紐付けてくれます。
Laravelは、以下の様にコマンドでModelのファイルを自動で作成してくれます。
以下コマンドで、usersテーブルに紐づいた、Userモデルを作成します。

php artisan make:model User

User.phpというファイルがapp配下に作られます。
「app/Models」配下に作りたい場合は、以下の様に指定すればModelsフォルダが作られます。

php artisan make:model Models/User

User.phpは以下の様な内容で自動作成されます。

<User.php>

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //
}

Modelの使用

ControllerでModelを呼び出して使用します。
以下記事で作成した、TestControllerを少し書き換えてみます。
Laravelでコントローラーからviewへデータを送る

Modelに限らず、別クラスを使う為には、useを使ってクラスを読み込む必要があります。

use App\Models\User;

クラスを読み込んだら、インスタンス化を行います。

$user = new User;

LaravelのModelには、様々な関数が用意されており、今回使っているfindは、idを指定してデータを取得する関数になります。

$value = $user->find(1);

SQLで表すと、以下になります。

SELECT * FROM users WHERE id = 1

この様に、SQL文を直接書かなくても、データベースの操作を行える機能をクエリビルダと呼びます。

<TestController.php>

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;

class TestController extends Controller
{
  public function func() {
    $user = new User;
    $value = $user->find(1);
    $arr = ['Snome1', 'Snome2', 'Snome3'];
    return view('sample', compact('value', 'arr'));
  }
}

取得データの使用

取得したデータは連想配列で変数に入っていると考えてください。
キーにカラム名を指定することで、そのカラムの値を取り出すことが出来ます。
今回は、idを取得する為に、idをキーとして指定します。

<html>
  <head>
    <title>HelloWorld</title>
  </head>
  <body>
    <h1>HelloWorld!</h1>
    <a>{{ $value['id'] }}</a>
    <h1>{{ $arr[0] }}</h1>
    <h2>{{ $arr[1] }}</h2>
    <h3>{{ $arr[2] }}</h3>
  </body>
</html> 

<実行結果>

findの引数を2に変えると、$value[‘id’]の中身も2になります。
※もちろんデータがusersテーブルに入っている前提です。データが無ければエラーになるか、何も表示されません。

まとめ

Laravelを使って、データベースへ接続し、データを取得してみました。
この様に、クエリビルダを使えば、SQL文を書かなくてもDBを操作出来ますが、SQLに不安がある人にはオススメは出来ません。
他のフレームワークになると、書き方も変わってくる上に、SQLが書けないと応用が利きません。
まずは、SQLの勉強を行なってから、クエリビルダを触ってみてください。

おススメ記事

タイトルとURLをコピーしました