プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【Laravel】Eloquentを使ったデータベースの操作の基礎

  • 2018年4月30日
  • 2018年5月1日
  • PHP
  • 136view
  • 0件
PHP

はじめに

Laravelでデータベースを操作する方法は主に、DBクラスを利用したものと、Eloquentを利用したものがある。
今回は、Laravel特有のORMであるEloquentを使い、楽にデータベースを操作する方法をおさらい。

ORMとは?
データベースとPHPのオブジェクトの間の橋渡しのような仕組みをもつ機能のこと。
ORMを使うことで、互換性のないデータを自動的に変換し、シームレスにデータのやり取りが行えるようになる。

Eloquentとは?
Laravelで用意されているORMの名称のこと。読み方はエロクアント。

Eloquentを使ったデータ操作の流れ

モデルを作成

まずはテーブルを操作するモデルを作成。
Laravelのプログラムがあるディレクトリに移動して、artisanコマンドで以下を実行する。

php artisan make:model User

上記でappフォルダの配下にUser.phpファイルが作成される。

Laravelでモデルを作成するときには、命名規則があることを覚えておく。
テーブル名は「複数形」「小文字」
モデル名は「単数形」「先頭大文字」
これに従って名前をつけることで、自動的にテーブルとモデルを関連付けることができる。
モデル名「User」→テーブル「users」と関連付け
モデル名「Person」→テーブル「people」と関連付け

作成されたモデルの中身は以下のようになっている。

<?php

namespace User;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
  //
}

以下のように書くことで、関連付けるテーブルを明示的に指定することもできます。

<?php

namespace User;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
  //
 protected $table = 'other_users';
}

コントローラーの作成

次に、モデルを利用するコントローラーを作る。
先ほどと同様に、artisanコマンドでコントローラーを作成。

php artisan make:controller UserController

UserControllerの中身を編集する。

<?php

namespace App\Http\Controllers;

use App\User;

use Illuminate\Http\Request;

class UserController extends Controller
{
  public function index(Request $request)
  {
    $users = User::all();
    return view('user.index', ['users => $users']);
  }
}

ビューを記述する

任意のblade.phpの中で以下の記述をする

@foreach ($users as $user)
  <p>{{$user->name}}</p>
  <p>{{$user->age}}</p>
  <p>{{$user->sex}}</p>
@endforeach

ルートを追加する

最後にルート情報を追加する。

Route::get('user', 'UserController@index');

localhost/userにアクセスして表示を確認してみる。
上記例ではデータベースにあるusersテーブルの全レコードを取得して、name,age,sexのカラムを順番に表示している。

要点

前項で記述したEloquentを使ったデータベースの操作で、ポイントとなる箇所

UserController.phpの中

$users = User::all();

Userクラスの「all」メソッドを呼び出し。
上記だけで全レコードを取得することができる。