Yii-query-builder
提供:Dev Guides
Yii-クエリビルダー
クエリビルダーを使用すると、プログラムでSQLクエリを作成できます。 クエリビルダーを使用すると、より読みやすいSQL関連のコードを記述できます。
クエリビルダーを使用するには、次の手順に従う必要があります-
yii \ db \ Queryオブジェクトを作成します。
クエリメソッドを実行します。
*yii \ db \ Query* オブジェクトを作成するには、さまざまなクエリビルダー関数を呼び出して、SQLクエリのさまざまな部分を定義する必要があります。
ステップ1 *-クエリビルダーの一般的な使用法を示すには、 *actionTestDb メソッドをこのように変更します。
public function actionTestDb() {
//generates "SELECT id, name, email FROM user WHERE name = 'User10';"
$user = (new \yii\db\Query())
->select(['id', 'name', 'email'])
->from('user')
->where(['name' => 'User10'])
->one();
var_dump($user);
}
ステップ2 *- *http://localhost:8080/index.php?r = site/test-db に移動すると、次の出力が表示されます。
Where()関数
- where()関数は、クエリのWHEREフラグメントを定義します。 *WHERE 条件を指定するには、3つの形式を使用できます。
- 文字列形式-'name = User10'
- ハッシュ形式-['name' ⇒ 'User10'、 'email ⇒ [email protected]']
- 演算子形式-['like'、 'name'、 'User']
文字列形式の例
public function actionTestDb() {
$user = (new \yii\db\Query())
->select(['id', 'name', 'email'])
->from('user')
->where('name = :name', [':name' => 'User11'])
->one();
var_dump($user);
}
出力は次のようになります。
ハッシュ形式の例
public function actionTestDb() {
$user = (new \yii\db\Query())
->select(['id', 'name', 'email'])
->from('user')
->where([
'name' => 'User5',
'email' => '[email protected]'
])
->one();
var_dump($user);
}
出力は次のようになります。
演算子形式では、次の形式で任意の条件を定義することができます-
[operator, operand1, operand2]
演算子はすることができます-
- and − ['and'、 'id = 1'、 'id = 2']は、id = 1 AND id = 2を生成します:または オペレーター
- between -['between'、 'id'、1、15]は、ID BETWEEN 1 AND 15を生成します
- not between -between演算子に似ていますが、BETWEENはNOT BETWEENに置き換えられます
- in -['in'、 'id'、[5,10,15]]はid IN(5,10,15)を生成します
- not in -in演算子に似ていますが、INはNOT INに置き換えられます
- like -['like'、 'name'、 'user']は、名前LIKE '%user%'を生成します
- *またはlike *-like演算子に似ていますが、ORを使用してLIKE述語を分割します
- not like -like演算子に似ていますが、LIKEはNOT LIKEに置き換えられます
- *またはnot like *-not like演算子に似ていますが、ORを使用してNOT LIKE述語を連結します
- exists -yii \ db \ Queryのインスタンスでなければならない1つのオペランドが必要です クラス
- not exists -exists演算子に似ていますが、NOT EXISTS(サブクエリ)式を作成します
- * <、⇐、>、> =、*、またはその他のDB演算子:['<'、 'id'、10]はid <10を生成します
演算子形式の例
public function actionTestDb() {
$users = (new \yii\db\Query())
->select(['id', 'name', 'email'])
->from('user')
->where(['between', 'id', 5, 7])
->all();
var_dump($users);
}
出力は次のようになります。
OrderBy()関数
- orderBy()*関数は、ORDER BYフラグメントを定義します。
例-
public function actionTestDb() {
$users = (new \yii\db\Query())
->select(['id', 'name', 'email'])
->from('user')
->orderBy('name DESC')
->all();
var_dump($users);
}
出力は次のようになります。
groupBy()関数
- groupBy()関数はGROUP BYフラグメントを定義し、 having()*メソッドはHAVINGフラグメントを指定します。
例-
public function actionTestDb() {
$users = (new \yii\db\Query())
->select(['id', 'name', 'email'])
->from('user')
->groupBy('name')
->having('id < 5')
->all();
var_dump($users);
}
出力は次のようになります。
- limit()および offset()メソッドは、 *LIMIT および OFFSET フラグメントを定義します。
例-
public function actionTestDb() {
$users = (new \yii\db\Query())
->select(['id', 'name', 'email'])
->from('user')
->limit(5)
->offset(5)
->all();
var_dump($users);
}
次の出力を見ることができます-
*yii \ db \ Query* クラスは、さまざまな目的のための一連のメソッドを提供します-
- * all()*-名前と値のペアの行の配列を返します。
- * one()*-最初の行を返します。
- * column()*-最初の列を返します。
- * scalar()*-結果の最初の行と最初の列からスカラー値を返します。
- * exists()*-クエリに結果が含まれているかどうかを示す値を返します
- * count()* COUNTクエリの結果を返します
- その他の集計クエリメソッド-sum($ q)、average($ q)、max($ q)、min($ q)が含まれます。 $ qパラメーターは、列名またはDB式のいずれかです。