忍者ブログ
 

東京・赤坂のシステム開発会社プラムザで働く、プログラマーの学習記録。

Laravel4.2: EloquentORMのチートシート(レコードのフェッチ)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

Laravel4.2: EloquentORMのチートシート(レコードのフェッチ)

※Laravel4.2系で検証

"eloquent"、とは流暢に話す・流暢な文章を書くといった様子を表す形容詞です。
文字通り直感的に操作できる、という印象があります。
EloquentORMを用いてDBを操作するには、モデルでEloquentクラスを継承します。
前置きはさておき、Eloquentのメソッドの基本的な使い方を以下に記します。


レコードのフェッチ

全件取得

    $model = new Model();
    $model->all();

プライマリキーでfetchする

    $model->find(1);

条件指定

    $model->where('column', '>=', 'value')->get();

第一引数にカラム名を指定
第二引数に式を指定「 = >= <= <> LIKE 」
第三引数に値を指定

WHEREのネスト

個人的に良いなと思ったのがWHEREのネストです。記述方法はシンプルで、ネストしたい条件をwhereNestedメソッドにクロージャで渡すことで実現できます。

例えば
deleted = 0 AND (description IS NOT NULL OR description IS NULL)
というクエリーは

$model->where('deleted', '=', 0)
        ->whereNested(function($query) {
            $query->whereNotNull('description');
            $query->whereNull('description');
        })
        ->get();

このように記述することができます。

BETWEEN

    $model->whereBetween('column', array('from', 'to'));

IS NULL/IS NOT NULL

    $model->whereNull('column')
    $model->whereNotNull('column')

IN/NOT IN

    $model->whereIn('column', $value);
    $model->whereNotIn('column', $value);

ORDER BY

昇順:

    $model->orderBy('column')

降順:
    $model->orderBy('column', 'DESC')

LIMIT

limit:

    $model->take(limit_counts)
offset:

    $model->skip(offset_counts)

毎回指定される条件を定義

モデルクラスで、scopeで始まるメソッドを定義すると、独自の条件を追加するメソッドを、特別な設定をすることなく、メソッドチェーンの中で指定することができます。
    public function scopeDefaultCondition($query)
    {
        return $query->where(...任意の条件);
    }

パラメータがある場合は第二引数に指定する(マニュアル未確認)

これは:

    WHERE column_name = 'hoge';

と同じ。他のメソッド名と衝突するカラム名の場合は使用できないようです(ある意味当然?)
PR

コメント

プロフィール

HN:
はと
性別:
非公開

P R