LoginSignup
9
10

More than 5 years have passed since last update.

FuelPHPクエリビルダのまとめ

Posted at

何回やるんだっていう

このへんでやったことに加え、ちょっと複雑なクエリを書いていきます。

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();

クエリ周りはどうしたってソースがごちゃごちゃしがちになるのが嫌です。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10