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

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

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

はじめに

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

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

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

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

モデルを作成

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

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

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

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

namespace User;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
//
}
[/php]

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

namespace User;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
//
 protected $table = ‘other_users’;
}
[/php]

コントローラーの作成

次に、モデルを利用するコントローラーを作る。
先ほどと同様に、artisanコマンドでコントローラーを作成。
[shell] php artisan make:controller UserController
[/shell]

UserControllerの中身を編集する。
[php] <?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’]);
}
}
[/php]

ビューを記述する

任意のblade.phpの中で以下の記述をする
[php] @foreach ($users as $user)
<p>{{$user->name}}</p>
<p>{{$user->age}}</p>
<p>{{$user->sex}}</p>
@endforeach
[/php]

ルートを追加する

最後にルート情報を追加する。
[php] Route::get(‘user’, ‘UserController@index’);
[/php]

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

要点

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

UserController.phpの中
[shell] $users = User::all();
[/shell] Userクラスの「all」メソッドを呼び出し。
上記だけで全レコードを取得することができる。