はじめに
Laravelでデータベースを操作する方法は主に、DBクラスを利用したものと、Eloquentを利用したものがある。
今回は、Laravel特有のORMであるEloquentを使い、楽にデータベースを操作する方法をおさらい。
データベースとPHPのオブジェクトの間の橋渡しのような仕組みをもつ機能のこと。
ORMを使うことで、互換性のないデータを自動的に変換し、シームレスにデータのやり取りが行えるようになる。
Eloquentとは?
Laravelで用意されているORMの名称のこと。読み方はエロクアント。
Eloquentを使ったデータ操作の流れ
モデルを作成
まずはテーブルを操作するモデルを作成。
Laravelのプログラムがあるディレクトリに移動して、artisanコマンドで以下を実行する。
[shell]
php artisan make:model User
[/shell]
上記でappフォルダの配下にUser.phpファイルが作成される。
テーブル名は「複数形」「小文字」
モデル名は「単数形」「先頭大文字」
これに従って名前をつけることで、自動的にテーブルとモデルを関連付けることができる。
モデル名「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」メソッドを呼び出し。
上記だけで全レコードを取得することができる。