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

raharu(仮名)(プログラマー)
これがダイバージェンス1%の先の世界か。。。

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

クエリを試す

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?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は使わないし)
特に困る様な事も無さそうです。