インターフェース yii\db\QueryInterface
実装クラス | yii\db\ActiveQuery、yii\db\ActiveQueryInterface、yii\db\Query |
---|---|
利用可能バージョン | 2.0 |
ソースコード | https://github.com/yiisoft/yii2/blob/master/framework/db/QueryInterface.php |
QueryInterface は、データベースクエリで実装されるべき最小限のメソッドセットを定義します。
このインターフェースのデフォルト実装は、yii\db\QueryTrait によって提供されています。
これは、one() インスタンスまたは all() を取得するためのサポートを備えています。limit() と offset() を使用したページネーションを許可します。orderBy() を使用したソートがサポートされており、アイテムは where() を使用して一部の条件に一致するように制限できます。
公開メソッド
メソッド | 説明 | 定義元 |
---|---|---|
addOrderBy() | クエリにORDER BY句を追加します。 | yii\db\QueryInterface |
all() | クエリを実行し、すべての結果を配列として返します。 | yii\db\QueryInterface |
andFilterWhere() | 空のパラメータを無視して、既存のWHERE句に追加のWHERE句を追加します。 | yii\db\QueryInterface |
andWhere() | 既存のWHERE句に追加のWHERE句を追加します。 | yii\db\QueryInterface |
count() | レコード数を返します。 | yii\db\QueryInterface |
emulateExecution() | クエリの実行をエミュレートするかどうかを設定し、データストアとの相互作用を防ぎます。 | yii\db\QueryInterface |
exists() | クエリ結果にデータ行が含まれているかどうかを示す値を返します。 | yii\db\QueryInterface |
filterWhere() | 空のパラメータを無視して、クエリのWHERE句を設定します。 | yii\db\QueryInterface |
indexBy() | indexBy() プロパティを設定します。 | yii\db\QueryInterface |
limit() | クエリのLIMIT句を設定します。 | yii\db\QueryInterface |
offset() | クエリのOFFSET句を設定します。 | yii\db\QueryInterface |
one() | クエリを実行し、結果の単一行を返します。 | yii\db\QueryInterface |
orFilterWhere() | 空のパラメータを無視して、既存のWHERE句に追加のWHERE句を追加します。 | yii\db\QueryInterface |
orWhere() | 既存のWHERE句に追加のWHERE句を追加します。 | yii\db\QueryInterface |
orderBy() | クエリのORDER BY句を設定します。 | yii\db\QueryInterface |
where() | クエリのWHERE句を設定します。 | yii\db\QueryInterface |
メソッドの詳細
クエリにORDER BY句を追加します。
こちらも参照してください orderBy().
public abstract $this addOrderBy ( $columns ) | ||
$columns | string|array |
ソート対象の列(と方向)。列は、文字列(例:「id ASC、name DESC」)または配列(例:`['id' => SORT_ASC、'name' => SORT_DESC]`)のいずれかで指定できます。列に括弧が含まれていない限り(列にDB式が含まれていることを意味します)、このメソッドは列名を自動的に引用符で囲みます。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function addOrderBy($columns);
クエリを実行し、すべての結果を配列として返します。
public abstract array all ( $db = null ) | ||
$db | yii\db\Connection|null |
クエリを実行するために使用されるデータベース接続。このパラメータが指定されていない場合、`db` アプリケーションコンポーネントが使用されます。 |
戻り値 | array |
クエリ結果。クエリ結果が何もない場合、空の配列が返されます。 |
---|
public function all($db = null);
空のパラメータを無視して、既存のWHERE句に追加のWHERE句を追加します。
新しい条件と既存の条件は、「AND」演算子を使用して結合されます。
こちらも参照してください
public abstract $this andFilterWhere ( array $condition ) | ||
$condition | array |
新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function andFilterWhere(array $condition);
public abstract $this andWhere ( $condition ) | ||
$condition | array |
新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function andWhere($condition);
レコード数を返します。
public abstract integer|string|null count ( $q = '*', $db = null ) | ||
$q | string |
COUNT式。デフォルトは'*'。 |
$db | yii\db\Connection|null |
クエリを実行するために使用されるデータベース接続。このパラメータが指定されていない場合、`db` アプリケーションコンポーネントが使用されます。 |
戻り値 | integer|string|null |
レコード数。 |
---|
public function count($q = '*', $db = null);
クエリの実行をエミュレートするかどうかを設定し、データストアとの相互作用を防ぎます。
このモードが有効になると、one()、all()、exists()など、クエリ結果を返すメソッドは、空の値またはfalseを返します。 `0=1` のようなfalseとなるWHERE条件を設定した場合など、プログラムロジックでクエリが結果を返さないことを示す場合に、このメソッドを使用する必要があります。
public abstract $this emulateExecution ( $value = true ) | ||
$value | boolean |
クエリの実行を防止するかどうか。 |
戻り値 | $this |
クエリオブジェクト自体。 |
---|
public function emulateExecution($value = true);
クエリ結果にデータ行が含まれているかどうかを示す値を返します。
public abstract boolean exists ( $db = null ) | ||
$db | yii\db\Connection|null |
クエリを実行するために使用されるデータベース接続。このパラメータが指定されていない場合、`db` アプリケーションコンポーネントが使用されます。 |
戻り値 | boolean |
クエリ結果にデータの行が含まれているかどうか。 |
---|
public function exists($db = null);
public abstract $this filterWhere ( array $condition ) | ||
$condition | array |
WHERE句に追加されるべき条件。このパラメータの指定方法については、where()を参照してください。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function filterWhere(array $condition);
indexBy() プロパティを設定します。
public abstract $this indexBy ( $column ) | ||
$column | string|callable |
クエリ結果をインデックスする列名。これは、指定された行データに基づいてインデックス値を返すcallable(例:無名関数)も可能です。callableのシグネチャは次のようになります。
|
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function indexBy($column);
クエリのLIMIT句を設定します。
public abstract $this limit ( $limit ) | ||
$limit | integer|null |
制限数。制限を無効にするには、nullまたは負の値を使用します。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function limit($limit);
クエリのOFFSET句を設定します。
public abstract $this offset ( $offset ) | ||
$offset | integer|null |
オフセット。オフセットを無効にするには、nullまたは負の値を使用します。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function offset($offset);
クエリを実行し、結果の単一行を返します。
public abstract array|boolean one ( $db = null ) | ||
$db | yii\db\Connection|null |
クエリを実行するために使用されるデータベース接続。このパラメータが指定されていない場合、`db` アプリケーションコンポーネントが使用されます。 |
戻り値 | array|boolean |
クエリ結果の最初の行(配列として)。クエリ結果が何もない場合はfalseを返します。 |
---|
public function one($db = null);
空のパラメータを無視して、既存のWHERE句に追加のWHERE句を追加します。
新しい条件と既存の条件は「OR」演算子を使用して結合されます。
こちらも参照してください
public abstract $this orFilterWhere ( array $condition ) | ||
$condition | array |
新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function orFilterWhere(array $condition);
public abstract $this orWhere ( $condition ) | ||
$condition | array |
新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function orWhere($condition);
クエリのORDER BY句を設定します。
こちらも参照してください addOrderBy().
public abstract $this orderBy ( $columns ) | ||
$columns | string|array |
ソート対象の列(と方向)。列は、文字列(例:「id ASC、name DESC」)または配列(例:`['id' => SORT_ASC、'name' => SORT_DESC]`)のいずれかで指定できます。列に括弧が含まれていない限り(列にDB式が含まれていることを意味します)、このメソッドは列名を自動的に引用符で囲みます。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function orderBy($columns);
クエリのWHERE句を設定します。
配列として指定された$condition
は、以下の2つの形式のいずれかになります。
- ハッシュ形式:
['column1' => value1, 'column2' => value2, ...]
- 演算子形式:
[operator, operand1, operand2, ...]
ハッシュ形式の条件は、一般的に次のSQL式を表します: column1=value1 AND column2=value2 AND ...
。値が配列の場合、IN
式が生成されます。値がnull
の場合、生成された式にはIS NULL
が使用されます。いくつかの例を以下に示します。
['type' => 1, 'status' => 2]
は(type = 1) AND (status = 2)
を生成します。['id' => [1, 2, 3], 'status' => 2]
は(id IN (1, 2, 3)) AND (status = 2)
を生成します。['status' => null]
はstatus IS NULL
を生成します。
演算子形式の条件は、指定された演算子に従ってSQL式を生成します。演算子には以下のものが含まれます。
and: オペランドは
AND
を使用して連結する必要があります。例えば、['and', 'id=1', 'id=2']
はid=1 AND id=2
を生成します。オペランドが配列の場合、ここで説明するルールを使用して文字列に変換されます。例えば、['and', 'type=1', ['or', 'id=1', 'id=2']]
はtype=1 AND (id=1 OR id=2)
を生成します。このメソッドは、クォートやエスケープは行いません。or: オペランドが
OR
を使用して連結されることを除いて、and
演算子と同様です。例えば、['or', ['type' => [7, 8, 9]], ['id' => [1, 2, 3]]]
は(type IN (7, 8, 9) OR (id IN (1, 2, 3)))
を生成します。not: これは1つのオペランドのみを受け取り、クエリ文字列の前に
NOT
を付加することでその否定を構築します。例えば['not', ['attribute' => null]]
は条件NOT (attribute IS NULL)
になります。between: オペランド1は列名で、オペランド2と3は、列が含まれる範囲の開始値と終了値である必要があります。例えば、
['between', 'id', 1, 10]
はid BETWEEN 1 AND 10
を生成します。not between:
BETWEEN
がNOT BETWEEN
に置き換えられることを除いて、between
と同様です。in: オペランド1は列またはDB式で、オペランド2は列またはDB式が属するべき値の範囲を表す配列です。例えば、
['in', 'id', [1, 2, 3]]
はid IN (1, 2, 3)
を生成します。このメソッドは、列名を適切に引用し、範囲内の値をエスケープします。複合
IN
条件を作成するには、列名と値の配列を使用できます。値は列名でインデックス付けされます:['in', ['id', 'name'], [['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar']] ]
。IN
条件の値を取得するために使用するサブクエリを指定することもできます:['in', 'user_id', (new Query())->select('id')->from('users')->where(['active' => 1])]
not in:
IN
がNOT IN
に置き換えられることを除いて、in
演算子と同様です。like: オペランド1は列またはDB式で、オペランド2は列またはDB式が類似するべき値を表す文字列または配列です。例えば、
['like', 'name', 'tester']
はname LIKE '%tester%'
を生成します。値の範囲が配列として与えられる場合、複数のLIKE
述語が生成され、AND
を使用して連結されます。例えば、['like', 'name', ['test', 'sample']]
はname LIKE '%test%' AND name LIKE '%sample%'
を生成します。このメソッドは、列名を適切に引用し、値内の特殊文字をエスケープします。自分でパーセント記号を一致する値に追加したい場合は、3番目のオペランドにfalse
を指定して行うことができます。例えば、['like', 'name', '%tester', false]
はname LIKE '%tester'
を生成します。or like: オペランド2が配列の場合、
OR
を使用してLIKE
述語を連結することを除いて、like
演算子と同様です。not like:
LIKE
がNOT LIKE
に置き換えられることを除いて、like
演算子と同様です。or not like:
OR
を使用してNOT LIKE
述語を連結することを除いて、not like
演算子と同様です。exists: オペランド1は、
EXISTS
条件を構築するために使用されるクエリオブジェクトです。例えば['exists', (new Query())->select('id')->from('users')->where(['active' => 1])]
は、次のSQL式になります:EXISTS (SELECT "id" FROM "users" WHERE "active"=1)
。not exists:
EXISTS
がNOT EXISTS
に置き換えられることを除いて、exists
演算子と同様です。さらに、次のように任意の演算子を指定できます:
['>=', 'id', 10]
という条件は、次のSQL式になります:id >= 10
。
このメソッドは、既存のWHERE条件を上書きすることに注意してください。andWhere()またはorWhere()を使用することを検討してください。
こちらも参照してください
public abstract $this where ( $condition ) | ||
$condition | array |
WHERE句に配置する必要がある条件。 |
戻り値 | $this |
クエリオブジェクト自体 |
---|
public function where($condition);
コメントするにはサインアップまたはログインしてください。