とあるプログラマの備忘録

都内某所に住むプログラマが自分用に備忘録を残すという趣旨のブログです。はてなダイアリーから移動しました!

Laravel4 Eloquent ORM SELECTをあれこれ試してみる

前回Createと触り程度をやってみたEloquent ORMですが
今回はもう少し踏み込んで見たいと思います。

クエリを試す

<?php

~~ skip
        //PK参照
        $records = Calendar::find(1);

        //条件参照
        $records = Calendar::where('area_name', 'tokyo')->get();

        //条件参照(比較演算子)
        $records = Calendar::where('id', '<=', 2)->get();

        //条件参照(LIKE)
        $records = Calendar::where('area_name', 'LIKE', "%kyo%")->get();

        //条件参照(IN)
        $records = Calendar::whereIn('area_name', array('tokyo', 'aomori'))->get();

        //条件参照(OR)
        $records = Calendar::whereOr('area_name', array('tokyo', 'aomori'))->get();

        //Order
        $records = Calendar::where('area_name', 'tokyo')->orderBy('id', 'DESC')->get();

        //Where最初とは限らない
        $records = Calendar::groupBy('area_name')->get();

        //OR句のネストだとこうなる(ちょっと複雑にしてみた)
        //select `id` from `calendar` where `calendar`.`deleted_at` is null and (`id` <= ? or `id` >= ?) and `area_name` = ? order by `id` desc
        $records = Calendar::select('id')
                            ->where(function($query)
                            {
                                $query->where('id', '<=', 10);
                                $query->orWhere('id', '>=', 50);
                            })
                            ->where('area_name', 'tokyo')
                            ->orderBy('id', "DESC")
                            ->get();


        // クエリログを確認する
        var_dump(DB::getQueryLog());

        //JSON形式で表示
        var_dump( Response::json($records));

これらが出来ればもう参照クエリは制覇したも当然です(基本JOINは使わないし)
特に困る様な事も無さそうです。

http://readouble.com/laravel/4/2/0/ja/queries.html