インターフェース yii\db\ActiveQueryInterface
| 継承元 | yii\db\QueryInterface |
|---|---|
| 実装元 | yii\db\ActiveQuery |
| 利用可能なバージョン | 2.0 |
| ソースコード | https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveQueryInterface.php |
ActiveQueryInterface は、アクティブレコードのクエリクラスによって実装される共通のインターフェースを定義します。
これらは、アクティブレコードを返す通常のクエリだけでなく、クエリが2つのアクティブレコードクラス間の関係を表し、関連レコードのみを返すリレーショナルクエリのためのメソッドです。
このインターフェースを実装するクラスは、yii\db\ActiveQueryTrait と yii\db\ActiveRelationTrait も使用する必要があります。
公開メソッド
メソッド詳細
| public abstract $this addOrderBy ( $columns ) | ||
| $columns | string|array |
並び順を指定するカラム(と方向)。カラムは、文字列(例: "id ASC, name DESC")または配列(例: |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function addOrderBy($columns);
定義元: yii\db\QueryInterface::all()
クエリを実行し、すべての結果を配列として返します。
| public abstract array all ( $db = null ) | ||
| $db | yii\db\Connection|null |
クエリの実行に使用されるデータベース接続。このパラメータが指定されていない場合、 |
| return | array |
クエリの結果。クエリの結果が何もない場合、空の配列が返されます。 |
|---|---|---|
public function all($db = null);
定義元: yii\db\QueryInterface::andFilterWhere()
既存の WHERE 条件に追加の WHERE 条件を追加します。空のパラメータは無視されます。
新しい条件と既存の条件は、'AND'演算子を使用して結合されます。
参照
| public abstract $this andFilterWhere ( array $condition ) | ||
| $condition | array |
新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。 |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function andFilterWhere(array $condition);
定義元: yii\db\QueryInterface::andWhere()
既存の WHERE 条件に追加の WHERE 条件を追加します。
新しい条件と既存の条件は、'AND'演算子を使用して結合されます。
参照
| public abstract $this andWhere ( $condition ) | ||
| $condition | array |
新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。 |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function andWhere($condition);
asArray() プロパティを設定します。
| public abstract $this asArray ( $value = true ) | ||
| $value | boolean |
クエリ結果をActive Recordの代わりに配列で返すかどうか。 |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function asArray($value = true);
定義元: yii\db\QueryInterface::count()
レコード数を返します。
| public abstract integer|string|null count ( $q = '*', $db = null ) | ||
| $q | string |
COUNT式。デフォルトは'*'。 |
| $db | yii\db\Connection|null |
クエリの実行に使用されるデータベース接続。このパラメータが指定されていない場合、 |
| return | integer|string|null |
レコード数。 |
|---|---|---|
public function count($q = '*', $db = null);
定義元: yii\db\QueryInterface::emulateExecution()
クエリの実行をエミュレートするかどうかを設定します。データストレージとのやり取りを防止します。
このモードが有効になると、one()、all()、exists()などのクエリ結果を返すメソッドは、空または偽の値を返します。プログラムロジックで、0=1のような偽のWHERE条件を設定した場合など、クエリが結果を返さないようにする必要がある場合に、このメソッドを使用する必要があります。
| public abstract $this emulateExecution ( $value = true ) | ||
| $value | boolean |
クエリの実行を防止するかどうか。 |
| return | $this |
クエリオブジェクト自体。 |
|---|---|---|
public function emulateExecution($value = true);
定義元: yii\db\QueryInterface::exists()
クエリ結果にデータの行が含まれているかどうかを示す値を返します。
| public abstract boolean exists ( $db = null ) | ||
| $db | yii\db\Connection|null |
クエリの実行に使用されるデータベース接続。このパラメータが指定されていない場合、 |
| return | boolean |
クエリ結果に行データが含まれているかどうか。 |
|---|---|---|
public function exists($db = null);
| public abstract $this filterWhere ( array $condition ) | ||
| $condition | array |
WHERE句に入れる条件。このパラメータの指定方法については、where()を参照してください。 |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function filterWhere(array $condition);
指定されたプライマリレコードの関連レコードを検索します。
このメソッドは、ActiveRecordのリレーションが遅延評価でアクセスされるときに呼び出されます。
| public abstract mixed findFor ( $name, $model ) | ||
| $name | string |
リレーション名 |
| $model | yii\db\ActiveRecordInterface |
プライマリモデル |
| return | mixed |
関連レコード |
|---|---|---|
public function findFor($name, $model);
indexBy() プロパティを設定します。
| public abstract $this indexBy ( $column ) | ||
| $column | string|callable |
クエリ結果をインデックス化する際に使用するカラムの名前。これは、与えられた行またはモデルデータに基づいてインデックス値を返す callable (例:匿名関数) であることもできます。callable のシグネチャは以下の通りである必要があります。
|
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function indexBy($column);
定義元: yii\db\QueryInterface::limit()
クエリの LIMIT 部分を設定します。
| public abstract $this limit ( $limit ) | ||
| $limit | integer|null |
制限数。制限を無効にするには、null または負の値を使用します。 |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function limit($limit);
定義元: yii\db\QueryInterface::offset()
クエリの OFFSET 部分を設定します。
| public abstract $this offset ( $offset ) | ||
| $offset | integer|null |
オフセット。オフセットを無効にするには、null または負の値を使用します。 |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function offset($offset);
クエリを実行し、単一の結果行を返します。
| public abstract yii\db\ActiveRecordInterface|array|null one ( $db = null ) | ||
| $db | yii\db\Connection|null |
DB コマンドの作成に使用する DB 接続。 |
| return | yii\db\ActiveRecordInterface|array|null |
クエリ結果の単一行。asArray() の設定に応じて、クエリ結果は配列または ActiveRecord オブジェクトのいずれかになります。クエリ結果が何もない場合は、 |
|---|---|---|
public function one($db = null);
定義元: yii\db\QueryInterface::orFilterWhere()
既存の WHERE 条件に追加の WHERE 条件を追加します。空のパラメータは無視されます。
新しい条件と既存の条件は 'OR' 演算子を使用して結合されます。
参照
| public abstract $this orFilterWhere ( array $condition ) | ||
| $condition | array |
新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。 |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function orFilterWhere(array $condition);
定義元: yii\db\QueryInterface::orWhere()
既存の WHERE 条件に追加の WHERE 条件を追加します。
新しい条件と既存の条件は 'OR' 演算子を使用して結合されます。
参照
| public abstract $this orWhere ( $condition ) | ||
| $condition | array |
新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。 |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function orWhere($condition);
| public abstract $this orderBy ( $columns ) | ||
| $columns | string|array |
並び順を指定するカラム(と方向)。カラムは、文字列(例: "id ASC, name DESC")または配列(例: |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function orderBy($columns);
リレーショナルクエリで使用するために、ジャンクションテーブルに関連付けられた関係を指定します。
| public abstract $this via ( $relationName, callable $callable = null ) | ||
| $relationName | string |
リレーション名。これは、リレーションの primaryModel で宣言されたリレーションを参照します。 |
| $callable | callable|null |
ジャンクションテーブルに関連付けられたリレーションをカスタマイズするための PHP コールバック。シグネチャは |
| return | $this |
リレーションオブジェクト自体。 |
|---|---|---|
public function via($relationName, callable $callable = null);
定義元: yii\db\QueryInterface::where()
クエリの 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演算子と似ていますが、生成される条件でINがNOT 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:
like演算子と似ていますが、オペランド2が配列の場合、LIKE述語を連結するためにORが使用される点が異なります。not like:
like演算子と似ていますが、生成される条件でLIKEがNOT LIKEに置き換えられる点が異なります。or not like:
not like演算子と似ていますが、NOT LIKE述語を連結するためにORが使用される点が異なります。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演算子と似ていますが、生成される条件でEXISTSがNOT EXISTSに置き換えられる点が異なります。さらに、次のように任意の演算子を指定できます。
['>=', 'id', 10]という条件は、次のSQL式になります:id >= 10。
このメソッドは、既存のWHERE条件を上書きすることに注意してください。代わりにandWhere()またはorWhere()を使用することもできます。
参照
| public abstract $this where ( $condition ) | ||
| $condition | array |
WHERE句に含めるべき条件。 |
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function where($condition);
このクエリを実行する必要がある関係を指定します。
このメソッドのパラメータには、1つまたは複数の文字列、または関係名とオプションのリレーションをカスタマイズするためのコールバックの単一の配列を指定できます。
関係名は、modelClassで定義された関係、または関連レコードの関係を表すサブリレーションを参照できます。例えば、orders.addressは、orders関係に対応するモデルクラスで定義されたaddress関係を意味します。
以下に使用例を示します
// find customers together with their orders and country
Customer::find()->with('orders', 'country')->all();
// find customers together with their orders and the orders' shipping address
Customer::find()->with('orders.address')->all();
// find customers together with their country and orders of status 1
Customer::find()->with([
'orders' => function (\yii\db\ActiveQuery $query) {
$query->andWhere('status = 1');
},
'country',
])->all();
| public abstract $this with ( ) | ||
| return | $this |
クエリオブジェクト自体 |
|---|---|---|
public function with();
コメントするにはサインアップまたはログインしてください。