WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
Eloquent ORMの基本的な使用法

Eloquent ORMの基本的な使用法

このエントリーをはてなブックマークに追加

LaravelのEloquent ORMを使用するには、app/modelsフォルダにEloquentモデルを作成します。

  • 自由度の高いLaravelですので、例のごとく、app/models以外に設置して、composer.jsonファイルでオートロードするように指定することも出来ますが、基本的に『モデルは、app/models内に設置する』と覚えてください。

Eloquentモデルの定義

Eloquentモデルは、app/modelsフォルダ内に単数名のデータベーステーブルをアッパーキャメル記法(先頭が大文字)で設置します。例えば、usersテーブルのモデルは、app/models/User.phpになります。

命名規則通りに作成していれば、モデルは、下記のように記述しただけで、完了です。

app/models/User.php

<?php
class User extends Eloquent{}

これで、$user=User::find(1);としただけで、id番号1のモデル(usersテーブルのidカラムの値が1のレコード)を取得することが出来ます。そして、$username=$user->nameとすると、変数$usernameにusersテーブルからidカラムの値が1のレコードのnameカラムの値(例えば、nakada)を代入する事が出来ます。

新規にデータベーステーブルを作成するのなら、簡単に済むのですが、既存のデータベーステーブルを使用したい場合も多々あると思いますので、基本的な定義方法を下記に記述しておきます。

データベーステーブルの指定

データベーステーブルは『protected $table=’テーブル名’』で指定します。例えば、上記のusersテーブルが既存のテーブル名は、userの単数形で作成していた場合、下記のように指定します。

<?php
class User extends Eloqunet{
protected $table = ‘user’;
}

主キーの指定

Eloquent ORMはデフォルトで、主キーのカラム名はidであると仮定しています。ですので、主キーをID(大文字)として作成していたような場合、以下のように指定します。

<?php
class User exends Eloquent{
protected $primaryKey = ‘ID’;
}

created_atとupdated_atカラムの作成

Eloquent ORMは、デフォルトで、テーブルに『created_at』カラムと『updated_at』カラムが存在するものとして作成されています。そして、データを作成した日付と更新した日付を自動的に更新するようになっています。

もし、これらのカラムが存在しないか、自動的に更新したくないのなら、下記のように指定します。

<?php
class User extends Eloquent{
protected $timestamps = false;
}

複数代入の指定

複数代入*の指定方法には、2種類あります。それは、許可するカラム名を指定する方法(fillable)と禁止するカラム名を指定する方法(guarded)があります。

それぞれ指定してみます。まず、許可するカラム名を指定する方法です。

<?php
class User extends Eloquent{
protected $fillable = [‘first_name’,’last_name’,’email’];
}

  • 上記の[‘first_name’,’last_name’,’email’]は配列を表します。php5.4以降で採用されました。
  • php5.3以前のバージョンをお使いの方は、array(‘first_name’,’last_name’,’email’)と指定してください。

つぎに、禁止するカラム名を指定する方法です。

<?php
class User exends Eloquent{
protected $guarded = [‘id’,’password’];
}

ソフトデリートの指定

Laravelには、ソフトデリートというとても便利な機能がついています。

データを削除するときには、とても気を遣うものですが、それでもたまにデータを削除して、とても困ったという経験を(私は)何度もしています。そんな方(私?)にお勧めなのが、このソフトデリートの機能です。

これは、後でご紹介しますが、データを仮想的に削除していますので、間違いに気づけばすぐにデータを復活することが出来ます。ですので、このソフトデリートは事前に設定しておくことをお勧めします。

まず、テーブルにdeleted_atカラムをtimestamps種別で作成します。そして、初期値は必ずNULL値指定することを忘れないようにして下さい。※スキーマビルダーなら簡単に作成してくれます。

テーブルにdeleted_atカラムを作成したら、モデルに下記のように指定します。

<?php
class User extends Eloquent{
protected $softDelete = true;
}

Model作成上の初期設定

それでは、上記の設定をまとめて下記に記述しておきます。

<?php
class User exends Eloquent{
//テーブル名が複数形なら不要
protected $table = ‘users’;
//日付自動更新を使用するなら不要
protected $timestamps = false;
//複数代入の指定
protected $guarded = [‘id’,’password’];
//ソフトデリートの指定
protected $sofoDelete = true;
}

Laravelでモデルを作成した場合、上記4つのプロパティは、常に考慮してください。

Eloquent Modelの基本メソッド

Eloquent Modelでは、クエリービルダーの全メソッドを使用することが出来ますので、クエリービルダーのメソッドを覚えておけば、ほとんど使用できます。

(例)テーブルから1レコードを取得する

//クエリービルダーを使用した場合
$users = DB::table(‘users’)->where(‘name’,’nakada’)->first();
//Eloquent ORMを使用した場合
$users = User::where(‘name’,’nakada’)->first();

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です