0 フォロワー

インターフェース 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\ActiveQueryTraityii\db\ActiveRelationTrait も使用する必要があります。

公開メソッド

継承されたメソッドを隠す

メソッド 説明 定義元
addOrderBy() クエリに追加の ORDER BY カラムを追加します。 yii\db\QueryInterface
all() クエリを実行し、すべての結果を配列として返します。 yii\db\QueryInterface
andFilterWhere() 既存の WHERE 条件に追加の WHERE 条件を追加します。空のパラメータは無視されます。 yii\db\QueryInterface
andWhere() 既存の WHERE 条件に追加の WHERE 条件を追加します。 yii\db\QueryInterface
asArray() asArray() プロパティを設定します。 yii\db\ActiveQueryInterface
count() レコード数を返します。 yii\db\QueryInterface
emulateExecution() クエリの実行をエミュレートするかどうかを設定します。データストレージとのやり取りを防止します。 yii\db\QueryInterface
exists() クエリ結果にデータの行が含まれているかどうかを示す値を返します。 yii\db\QueryInterface
filterWhere() 空のパラメータを無視して、クエリの WHERE 部分を設定します。 yii\db\QueryInterface
findFor() 指定されたプライマリレコードの関連レコードを検索します。 yii\db\ActiveQueryInterface
indexBy() indexBy() プロパティを設定します。 yii\db\ActiveQueryInterface
limit() クエリの LIMIT 部分を設定します。 yii\db\QueryInterface
offset() クエリの OFFSET 部分を設定します。 yii\db\QueryInterface
one() クエリを実行し、単一の結果行を返します。 yii\db\ActiveQueryInterface
orFilterWhere() 既存の WHERE 条件に追加の WHERE 条件を追加します。空のパラメータは無視されます。 yii\db\QueryInterface
orWhere() 既存の WHERE 条件に追加の WHERE 条件を追加します。 yii\db\QueryInterface
orderBy() クエリの ORDER BY 部分を設定します。 yii\db\QueryInterface
via() リレーショナルクエリで使用するために、ジャンクションテーブルに関連付けられた関係を指定します。 yii\db\ActiveQueryInterface
where() クエリの WHERE 部分を設定します。 yii\db\QueryInterface
with() このクエリを実行する必要がある関係を指定します。 yii\db\ActiveQueryInterface

メソッド詳細

継承されたメソッドを隠す

addOrderBy() public abstract method

定義元: yii\db\QueryInterface::addOrderBy()

クエリに追加の ORDER BY カラムを追加します。

orderBy() も参照してください。

public abstract $this addOrderBy ( $columns )
$columns string|array

並び順を指定するカラム(と方向)。カラムは、文字列(例: "id ASC, name DESC")または配列(例: ['id' => SORT_ASC, 'name' => SORT_DESC])で指定できます。メソッドは、カラム名が括弧を含む場合(カラムがDB式を含むことを意味します)を除き、自動的にカラム名をクォートします。

return $this

クエリオブジェクト自体

                public function addOrderBy($columns);

            
all() public abstract メソッド

定義元: yii\db\QueryInterface::all()

クエリを実行し、すべての結果を配列として返します。

public abstract array all ( $db null )
$db yii\db\Connection|null

クエリの実行に使用されるデータベース接続。このパラメータが指定されていない場合、dbアプリケーションコンポーネントが使用されます。

return array

クエリの結果。クエリの結果が何もない場合、空の配列が返されます。

                public function all($db = null);

            
andFilterWhere() public abstract メソッド

定義元: yii\db\QueryInterface::andFilterWhere()

既存の WHERE 条件に追加の WHERE 条件を追加します。空のパラメータは無視されます。

新しい条件と既存の条件は、'AND'演算子を使用して結合されます。

参照

public abstract $this andFilterWhere ( array $condition )
$condition array

新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。

return $this

クエリオブジェクト自体

                public function andFilterWhere(array $condition);

            
andWhere() public abstract メソッド

定義元: 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 メソッド

asArray() プロパティを設定します。

public abstract $this asArray ( $value true )
$value boolean

クエリ結果をActive Recordの代わりに配列で返すかどうか。

return $this

クエリオブジェクト自体

                public function asArray($value = true);

            
count() public abstract メソッド

定義元: yii\db\QueryInterface::count()

レコード数を返します。

public abstract integer|string|null count ( $q '*', $db null )
$q string

COUNT式。デフォルトは'*'。

$db yii\db\Connection|null

クエリの実行に使用されるデータベース接続。このパラメータが指定されていない場合、dbアプリケーションコンポーネントが使用されます。

return integer|string|null

レコード数。

                public function count($q = '*', $db = null);

            
emulateExecution() public abstract メソッド (バージョン2.0.11以降利用可能)

定義元: 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);

            
exists() public abstract メソッド

定義元: yii\db\QueryInterface::exists()

クエリ結果にデータの行が含まれているかどうかを示す値を返します。

public abstract boolean exists ( $db null )
$db yii\db\Connection|null

クエリの実行に使用されるデータベース接続。このパラメータが指定されていない場合、dbアプリケーションコンポーネントが使用されます。

return boolean

クエリ結果に行データが含まれているかどうか。

                public function exists($db = null);

            
filterWhere() public abstract メソッド

定義元: yii\db\QueryInterface::filterWhere()

空のパラメータを無視して、クエリの WHERE 部分を設定します。

参照

public abstract $this filterWhere ( array $condition )
$condition array

WHERE句に入れる条件。このパラメータの指定方法については、where()を参照してください。

return $this

クエリオブジェクト自体

                public function filterWhere(array $condition);

            
findFor() public abstract メソッド

指定されたプライマリレコードの関連レコードを検索します。

このメソッドは、ActiveRecordのリレーションが遅延評価でアクセスされるときに呼び出されます。

public abstract mixed findFor ( $name, $model )
$name string

リレーション名

$model yii\db\ActiveRecordInterface

プライマリモデル

return mixed

関連レコード

                public function findFor($name, $model);

            
indexBy() public abstract メソッド

indexBy() プロパティを設定します。

public abstract $this indexBy ( $column )
$column string|callable

クエリ結果をインデックス化する際に使用するカラムの名前。これは、与えられた行またはモデルデータに基づいてインデックス値を返す callable (例:匿名関数) であることもできます。callable のシグネチャは以下の通りである必要があります。

// $model is an AR instance when `asArray` is false,
// or an array of column values when `asArray` is true.
function ($model)
{
    // return the index value corresponding to $model
}
return $this

クエリオブジェクト自体

                public function indexBy($column);

            
limit() public abstract メソッド

定義元: yii\db\QueryInterface::limit()

クエリの LIMIT 部分を設定します。

public abstract $this limit ( $limit )
$limit integer|null

制限数。制限を無効にするには、null または負の値を使用します。

return $this

クエリオブジェクト自体

                public function limit($limit);

            
offset() public abstract メソッド

定義元: yii\db\QueryInterface::offset()

クエリの OFFSET 部分を設定します。

public abstract $this offset ( $offset )
$offset integer|null

オフセット。オフセットを無効にするには、null または負の値を使用します。

return $this

クエリオブジェクト自体

                public function offset($offset);

            
one() public abstract メソッド

クエリを実行し、単一の結果行を返します。

public abstract yii\db\ActiveRecordInterface|array|null one ( $db null )
$db yii\db\Connection|null

DB コマンドの作成に使用する DB 接続。null の場合、modelClass によって返される DB 接続が使用されます。

return yii\db\ActiveRecordInterface|array|null

クエリ結果の単一行。asArray() の設定に応じて、クエリ結果は配列または ActiveRecord オブジェクトのいずれかになります。クエリ結果が何もない場合は、null が返されます。

                public function one($db = null);

            
orFilterWhere() public abstract メソッド

定義元: yii\db\QueryInterface::orFilterWhere()

既存の WHERE 条件に追加の WHERE 条件を追加します。空のパラメータは無視されます。

新しい条件と既存の条件は 'OR' 演算子を使用して結合されます。

参照

public abstract $this orFilterWhere ( array $condition )
$condition array

新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。

return $this

クエリオブジェクト自体

                public function orFilterWhere(array $condition);

            
orWhere() public abstract メソッド

定義元: yii\db\QueryInterface::orWhere()

既存の WHERE 条件に追加の WHERE 条件を追加します。

新しい条件と既存の条件は 'OR' 演算子を使用して結合されます。

参照

public abstract $this orWhere ( $condition )
$condition array

新しいWHERE条件。このパラメータの指定方法については、where()を参照してください。

return $this

クエリオブジェクト自体

                public function orWhere($condition);

            
orderBy() public abstract メソッド

定義元: yii\db\QueryInterface::orderBy()

クエリの ORDER BY 部分を設定します。

addOrderBy() も参照してください。

public abstract $this orderBy ( $columns )
$columns string|array

並び順を指定するカラム(と方向)。カラムは、文字列(例: "id ASC, name DESC")または配列(例: ['id' => SORT_ASC, 'name' => SORT_DESC])で指定できます。メソッドは、カラム名が括弧を含む場合(カラムがDB式を含むことを意味します)を除き、自動的にカラム名をクォートします。

return $this

クエリオブジェクト自体

                public function orderBy($columns);

            
via() public abstract メソッド

リレーショナルクエリで使用するために、ジャンクションテーブルに関連付けられた関係を指定します。

public abstract $this via ( $relationName, callable $callable null )
$relationName string

リレーション名。これは、リレーションの primaryModel で宣言されたリレーションを参照します。

$callable callable|null

ジャンクションテーブルに関連付けられたリレーションをカスタマイズするための PHP コールバック。シグネチャは function($query) で、$query はカスタマイズされるクエリです。

return $this

リレーションオブジェクト自体。

                public function via($relationName, callable $callable = null);

            
where() public abstract メソッド

定義元: 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: 生成された条件で BETWEENNOT 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演算子と似ていますが、生成される条件でINNOT 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演算子と似ていますが、生成される条件でLIKENOT 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演算子と似ていますが、生成される条件でEXISTSNOT EXISTSに置き換えられる点が異なります。

  • さらに、次のように任意の演算子を指定できます。['>=', 'id', 10]という条件は、次のSQL式になります: id >= 10

このメソッドは、既存のWHERE条件を上書きすることに注意してください。代わりにandWhere()またはorWhere()を使用することもできます。

参照

public abstract $this where ( $condition )
$condition array

WHERE句に含めるべき条件。

return $this

クエリオブジェクト自体

                public function where($condition);

            
with() public abstract method

このクエリを実行する必要がある関係を指定します。

このメソッドのパラメータには、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();