何回やるんだっていう
このへんでやったことに加え、ちょっと複雑なクエリを書いていきます。
as句(カラムの別名での取得)
方法1
selectの引数に配列を使います。→公式ドキュメント
DB->select(array(DB::expr('count(*)'),'count')->from('hoge')->execute();
方法2
DB::expr()を使います。→公式ドキュメント
DB->select(DB::expr('count(*) as count'))->from('hoge')->execute();
これらはどちらも同じ意味を持ちます。
DB::expr()
はその中身がエスケープされないようになっているもので、
本来FuelPHPとして正しい構文はselect(array())
の方だと思われます。
expr見やすくて好きですけどね(´@ω@`)
SQLクロージャ
where句
- DB::and_where_open()
- DB::and_where_close()
- DB::or_where_open()
- DB::or_where_close()
を用います。→公式ドキュメント
DB::select()->from('paid')
->where('status','<>',DELETE)
->and_where_open()
->or_where('type',TYPE_FOOD)
->or_where('type',TYPE_DRINK)
->and_where_close()
->execute();
// select * from paid where status <> DELETE and (type = TYPE_FOOD or type = TYPE_DRINK);
// DELETE,TYPE_FOOD,TYPE_DRINKの3つは定数だと思ってください
having句
- DB::and_having_open()
- DB::and_having_close()
- DB::or_having_open()
- DB::or_having_close()
DB::expr()
expr()の使い方としてはたぶんこちらが正しい。
- date_format()
- lpad()
など、Fuelの関数としてフォローされていない部分を利用するためにDB::expr()でラップしてやります。
DB::select(DB::expr("lpad(id,5,'0')"),DB::expr("date_format(registed,'%Y/%m/%d')"))->from('users')->execute()->as_array();
クエリ周りはどうしたってソースがごちゃごちゃしがちになるのが嫌です。