0 フォロワー

クラス yii\db\pgsql\QueryBuilder

継承yii\db\pgsql\QueryBuilder » yii\db\QueryBuilder » yii\base\BaseObject
実装yii\base\Configurable
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/db/pgsql/QueryBuilder.php

QueryBuilder は、PostgreSQL データベース用のクエリビルダーです。

公開プロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元
$conditionBuilders array クエリ条件とビルダーメソッドのマップ。 yii\db\QueryBuilder
$conditionClasses array 条件エイリアスと条件クラスのマップ。 yii\db\QueryBuilder
$db yii\db\Connection データベース接続。 yii\db\QueryBuilder
$expressionBuilders string[]|yii\db\ExpressionBuilderInterface[] 式クラスと式ビルダークラスのマッピング。 yii\db\QueryBuilder
$separator string SQL 文の異なるフラグメント間のセパレータ。 yii\db\QueryBuilder
$typeMap array 抽象的な列の種類(キー)から物理的な列の種類(値)へのマッピング。 yii\db\pgsql\QueryBuilder

保護されたプロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元

公開メソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\BaseObject
__construct() コンストラクタ。 yii\db\QueryBuilder
__get() オブジェクトプロパティの値を返します。 yii\base\BaseObject
__isset() プロパティが設定されているかどうか(つまり、定義されていて null ではないか)を確認します。 yii\base\BaseObject
__set() オブジェクトプロパティの値を設定します。 yii\base\BaseObject
__unset() オブジェクトプロパティを null に設定します。 yii\base\BaseObject
addCheck() 既存のテーブルにチェック制約を追加するための SQL コマンドを作成します。 yii\db\QueryBuilder
addColumn() 新しい DB 列を追加するための SQL 文を構築します。 yii\db\QueryBuilder
addCommentOnColumn() 列にコメントを追加するための SQL コマンドを構築します。 yii\db\QueryBuilder
addCommentOnTable() テーブルにコメントを追加するための SQL コマンドを構築します。 yii\db\QueryBuilder
addDefaultValue() 既存のテーブルにデフォルト値制約を追加するための SQL コマンドを作成します。 yii\db\QueryBuilder
addForeignKey() 既存のテーブルに外部キー制約を追加するための SQL 文を構築します。 yii\db\QueryBuilder
addPrimaryKey() 既存のテーブルに主キー制約を追加するための SQL 文を構築します。 yii\db\QueryBuilder
addUnique() 既存のテーブルに一意制約を追加するための SQL コマンドを作成します。 yii\db\QueryBuilder
alterColumn() 列の定義を変更するための SQL 文を構築します。 yii\db\pgsql\QueryBuilder
batchInsert() バッチ INSERT SQL 文を生成します。 yii\db\pgsql\QueryBuilder
bindParam() PARAM_PREFIX を使用して $params 配列に $value を追加するためのヘルパーメソッド。 yii\db\QueryBuilder
build() yii\db\Query オブジェクトから SELECT SQL 文を生成します。 yii\db\QueryBuilder
buildAndCondition() AND または OR 演算子で 2 つ以上の SQL 式を接続します。 yii\db\QueryBuilder
buildBetweenCondition() BETWEEN 演算子を使用した SQL 式を作成します。 yii\db\QueryBuilder
buildColumns() 列を処理し、必要に応じて適切に引用符で囲みます。 yii\db\QueryBuilder
buildCondition() 条件の指定を解析し、対応する SQL 式を生成します。 yii\db\QueryBuilder
buildExistsCondition() EXISTS 演算子を使用した SQL 式を作成します。 yii\db\QueryBuilder
buildExpression() 与えられた $expression を構築します。 yii\db\QueryBuilder
buildFrom() yii\db\QueryBuilder
buildGroupBy() yii\db\QueryBuilder
buildHashCondition() 列と値のペアに基づいて条件を作成します。 yii\db\QueryBuilder
buildHaving() yii\db\QueryBuilder
buildInCondition() IN 演算子を使用した SQL 式を作成します。 yii\db\QueryBuilder
buildJoin() yii\db\QueryBuilder
buildLikeCondition() LIKE 演算子を使用した SQL 式を作成します。 yii\db\QueryBuilder
buildLimit() yii\db\QueryBuilder
buildNotCondition() NOT 演算子を使用して SQL 式を反転します。 yii\db\QueryBuilder
buildOrderBy() yii\db\QueryBuilder
buildOrderByAndLimit() ORDER BY および LIMIT/OFFSET 句を構築し、指定された SQL に追加します。 yii\db\QueryBuilder
buildSelect() yii\db\QueryBuilder
buildSimpleCondition() "column" operator value のような SQL 式を作成します。 yii\db\QueryBuilder
buildUnion() yii\db\QueryBuilder
buildWhere() yii\db\QueryBuilder
buildWithQueries() yii\db\QueryBuilder
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\BaseObject
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\BaseObject
checkIntegrity() 整合性チェックを有効または無効にするための SQL 文を構築します。 yii\db\pgsql\QueryBuilder
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
createConditionFromArray() yii\db\Query::where() で説明されている配列形式で定義された $condition を、$conditionClasses マップに従って yii\db\condition\ConditionInterface のインスタンスに変換します。 yii\db\QueryBuilder
createIndex() 新しいインデックスを作成するための SQL 文を構築します。 yii\db\pgsql\QueryBuilder
createTable() 新しい DB テーブルを作成するための SQL 文を構築します。 yii\db\QueryBuilder
createView() SQL ビューを作成します。 yii\db\QueryBuilder
delete() DELETE SQL 文を作成します。 yii\db\QueryBuilder
dropCheck() チェック制約を削除するための SQL コマンドを作成します。 yii\db\QueryBuilder
dropColumn() DB 列を削除するための SQL 文を構築します。 yii\db\QueryBuilder
dropCommentFromColumn() 列にコメントを追加するための SQL コマンドを構築します。 yii\db\QueryBuilder
dropCommentFromTable() テーブルにコメントを追加するための SQL コマンドを構築します。 yii\db\QueryBuilder
dropDefaultValue() デフォルト値制約を削除するための SQL コマンドを作成します。 yii\db\QueryBuilder
dropForeignKey() 外部キー制約を削除するための SQL 文を構築します。 yii\db\QueryBuilder
dropIndex() インデックスを削除するための SQL 文を構築します。 yii\db\pgsql\QueryBuilder
dropPrimaryKey() 既存のテーブルから主キー制約を削除するための SQL 文を構築します。 yii\db\QueryBuilder
dropTable() DB テーブルを削除するための SQL 文を構築します。 yii\db\QueryBuilder
dropUnique() 一意制約を削除するための SQL コマンドを作成します。 yii\db\QueryBuilder
dropView() SQL ビューを削除します。 yii\db\QueryBuilder
executeResetSequence() テーブルの主キーのシーケンス値をリセットするための SQL 文を実行します。 yii\db\QueryBuilder
getColumnType() 抽象的な列の種類を物理的な列の種類に変換します。 yii\db\QueryBuilder
getExpressionBuilder() $expression に適した yii\db\ExpressionBuilderInterface のオブジェクトを取得します。 yii\db\QueryBuilder
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\db\QueryBuilder
insert() INSERT SQL 文を作成します。 yii\db\pgsql\QueryBuilder
renameColumn() 列の名前を変更するための SQL 文を構築します。 yii\db\QueryBuilder
renameTable() DB テーブルの名前を変更するための SQL 文を構築します。 yii\db\pgsql\QueryBuilder
resetSequence() テーブルの主キーのシーケンス値をリセットするための SQL 文を作成します。 yii\db\pgsql\QueryBuilder
selectExists() SELECT EXISTS() SQL 文を作成します。 yii\db\QueryBuilder
setConditionClasses() $conditionClassesプロパティのセッター。 yii\db\QueryBuilder
setExpressionBuilders() $expressionBuildersプロパティのセッター。 yii\db\QueryBuilder
truncateTable() DBテーブルを切り捨てるSQL文を構築します。 yii\db\pgsql\QueryBuilder
update() UPDATE SQL文を作成します。 yii\db\pgsql\QueryBuilder
upsert() データベーステーブルに、行がまだ存在しない場合(一意制約に一致する場合)、行を挿入するか、存在する場合は更新するSQL文を作成します。 yii\db\pgsql\QueryBuilder

保護されたメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
defaultConditionClasses() デフォルトの条件クラスの配列を含みます。クエリビルダーのデフォルトの条件クラスを変更したい場合は、このメソッドを拡張してください。$conditionClassesのドキュメントを参照してください。 yii\db\pgsql\QueryBuilder
defaultExpressionBuilders() デフォルトの式ビルダーの配列を含みます。このクエリビルダーのデフォルトの式ビルダーを変更したい場合は、このメソッドを拡張してオーバーライドしてください。$expressionBuildersのドキュメントを参照してください。 yii\db\pgsql\QueryBuilder
extractAlias() テーブルエイリアスが存在する場合はそれを抽出し、存在しない場合はfalseを返します。 yii\db\QueryBuilder
hasLimit() 指定された制限が有効かどうかを確認します。 yii\db\QueryBuilder
hasOffset() 指定されたオフセットが有効かどうかを確認します。 yii\db\QueryBuilder
prepareInsertSelectSubQuery() INSERT INTO ... SELECT SQL文のselectサブクエリとフィールド名を準備します。 yii\db\QueryBuilder
prepareInsertValues() INSERT SQL文のVALUES部分を準備します。 yii\db\QueryBuilder
prepareUpdateSets() UPDATE SQL文のSET部分を準備します。 yii\db\QueryBuilder
prepareUpsertColumns() yii\db\QueryBuilder

定数

継承された定数を非表示

定数 説明 定義元
INDEX_B_TREE 'btree' createIndex()のためのBツリーインデックスを定義します。 yii\db\pgsql\QueryBuilder
INDEX_GIN 'gin' createIndex()のためのGINインデックスを定義します。 yii\db\pgsql\QueryBuilder
INDEX_GIST 'gist' createIndex()のためのGiSTインデックスを定義します。 yii\db\pgsql\QueryBuilder
INDEX_HASH 'hash' createIndex()のためのハッシュインデックスを定義します。 yii\db\pgsql\QueryBuilder
INDEX_UNIQUE 'unique' createIndex()のためのUNIQUEインデックスを定義します。 yii\db\pgsql\QueryBuilder
PARAM_PREFIX ':qp' 自動生成されたクエリバインディングパラメーターのプレフィックスです。 yii\db\QueryBuilder

プロパティの詳細

継承されたプロパティを非表示

$typeMap public property

抽象的な列の種類(キー)から物理的な列の種類(値)へのマッピング。

public array $typeMap = [
    \
yii\db\pgsql\Schema::TYPE_PK => 'serial NOT NULL PRIMARY KEY',
    \
yii\db\pgsql\Schema::TYPE_UPK => 'serial NOT NULL PRIMARY KEY',
    \
yii\db\pgsql\Schema::TYPE_BIGPK => 'bigserial NOT NULL PRIMARY KEY',
    \
yii\db\pgsql\Schema::TYPE_UBIGPK => 'bigserial NOT NULL PRIMARY KEY',
    \
yii\db\pgsql\Schema::TYPE_CHAR => 'char(1)',
    \
yii\db\pgsql\Schema::TYPE_STRING => 'varchar(255)',
    \
yii\db\pgsql\Schema::TYPE_TEXT => 'text',
    \
yii\db\pgsql\Schema::TYPE_TINYINT => 'smallint',
    \
yii\db\pgsql\Schema::TYPE_SMALLINT => 'smallint',
    \
yii\db\pgsql\Schema::TYPE_INTEGER => 'integer',
    \
yii\db\pgsql\Schema::TYPE_BIGINT => 'bigint',
    \
yii\db\pgsql\Schema::TYPE_FLOAT => 'double precision',
    \
yii\db\pgsql\Schema::TYPE_DOUBLE => 'double precision',
    \
yii\db\pgsql\Schema::TYPE_DECIMAL => 'numeric(10,0)',
    \
yii\db\pgsql\Schema::TYPE_DATETIME => 'timestamp(0)',
    \
yii\db\pgsql\Schema::TYPE_TIMESTAMP => 'timestamp(0)',
    \
yii\db\pgsql\Schema::TYPE_TIME => 'time(0)',
    \
yii\db\pgsql\Schema::TYPE_DATE => 'date',
    \
yii\db\pgsql\Schema::TYPE_BINARY => 'bytea',
    \
yii\db\pgsql\Schema::TYPE_BOOLEAN => 'boolean',
    \
yii\db\pgsql\Schema::TYPE_MONEY => 'numeric(19,4)',
    \
yii\db\pgsql\Schema::TYPE_JSON => 'jsonb',
]

メソッドの詳細

継承されたメソッドを非表示

__call() public method

定義されている場所: yii\base\BaseObject::__call()

クラスメソッドではない名前付きメソッドを呼び出します。

これはPHPのマジックメソッドであり、未知のメソッドが呼び出されたときに暗黙的に呼び出されるため、直接呼び出さないでください。

public mixed __call ( $name, $params )
$name string

メソッド名

$params array

メソッドパラメーター

戻り値 mixed

メソッドの戻り値

例外 yii\base\UnknownMethodException

未知のメソッドを呼び出した場合

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() public メソッド

定義位置: yii\db\QueryBuilder::__construct()

コンストラクタ。

public void __construct ( $connection, $config = [] )
$connection yii\db\Connection

データベース接続。

$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($connection, $config = [])
{
    $this->db = $connection;
    parent::__construct($config);
}

            
__get() public メソッド

定義位置: yii\base\BaseObject::__get()

オブジェクトプロパティの値を返します。

これはPHPのマジックメソッドであり、`$value = $object->property;`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

こちらも参照してください __set().

public mixed __get ( $name )
$name string

プロパティ名

戻り値 mixed

プロパティ値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 yii\base\InvalidCallException

プロパティが書き込み専用の場合

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public メソッド

定義位置: yii\base\BaseObject::__isset()

プロパティが設定されているかどうか(つまり、定義されていて null ではないか)を確認します。

これはPHPのマジックメソッドであり、`isset($object->property)`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

プロパティが定義されていない場合、falseが返されることに注意してください。

こちらも参照してください https://www.php.net/manual/en/function.isset.php.

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

戻り値 boolean

指定されたプロパティが設定されているかどうか(nullではない)。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() public メソッド

定義位置: yii\base\BaseObject::__set()

オブジェクトプロパティの値を設定します。

これはPHPのマジックメソッドであり、`$object->property = $value;`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

こちらも参照してください __get().

public void __set ( $name, $value )
$name string

プロパティ名またはイベント名

$value mixed

プロパティ値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 yii\base\InvalidCallException

プロパティが読み取り専用の場合

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__unset() public メソッド

定義位置: yii\base\BaseObject::__unset()

オブジェクトプロパティを null に設定します。

これはPHPのマジックメソッドであり、`unset($object->property)`を実行した際に暗黙的に呼び出されるため、直接呼び出さないでください。

プロパティが定義されていない場合、このメソッドは何もしません。プロパティが読み取り専用の場合、例外をスローします。

こちらも参照してください https://www.php.net/manual/en/function.unset.php.

public void __unset ( $name )
$name string

プロパティ名

例外 yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
addCheck() public メソッド (バージョン 2.0.13 から利用可能)

定義位置: yii\db\QueryBuilder::addCheck()

既存のテーブルにチェック制約を追加するための SQL コマンドを作成します。

public string addCheck ( $name, $table, $expression )
$name string

チェック制約の名前。この名前はメソッドによって適切に引用符で囲まれます。

$table string

チェック制約が追加されるテーブル。テーブル名はメソッドによって適切に引用符で囲まれます。

$expression string

CHECK制約のSQL。

戻り値 string

既存のテーブルにチェック制約を追加するためのSQL文。

                public function addCheck($name, $table, $expression)
{
    return 'ALTER TABLE ' . $this->db->quoteTableName($table) . ' ADD CONSTRAINT '
        . $this->db->quoteColumnName($name) . ' CHECK (' . $this->db->quoteSql($expression) . ')';
}

            
addColumn() public メソッド

定義位置: yii\db\QueryBuilder::addColumn()

新しい DB 列を追加するための SQL 文を構築します。

public string addColumn ( $table, $column, $type )
$table string

新しい列が追加されるテーブル。テーブル名はメソッドによって適切に引用符で囲まれます。

$column string

新しい列の名前。名前はメソッドによって適切に引用符で囲まれます。

$type string

列の型。getColumnType() メソッドは、抽象的な列の型(もしあれば)を物理的な型に変換するために呼び出されます。抽象型として認識されないものは、生成されたSQLにそのまま保持されます。例えば、'string'は'varchar(255)'に変換されますが、'string not null'は'varchar(255) not null'になります。

戻り値 string

新しい列を追加するためのSQL文。

                public function addColumn($table, $column, $type)
{
    return 'ALTER TABLE ' . $this->db->quoteTableName($table)
        . ' ADD ' . $this->db->quoteColumnName($column) . ' '
        . $this->getColumnType($type);
}

            
addCommentOnColumn() public メソッド (バージョン 2.0.8 から利用可能)

定義位置: yii\db\QueryBuilder::addCommentOnColumn()

列にコメントを追加するための SQL コマンドを構築します。

public string addCommentOnColumn ( $table, $column, $comment )
$table string

コメントを追加する列を持つテーブル。テーブル名はメソッドによって適切に引用符で囲まれます。

$column string

コメントを追加する列の名前。列名はメソッドによって適切に引用符で囲まれます。

$comment string

追加するコメントのテキスト。コメントはメソッドによって適切に引用符で囲まれます。

戻り値 string

列にコメントを追加するためのSQL文

                public function addCommentOnColumn($table, $column, $comment)
{
    return 'COMMENT ON COLUMN ' . $this->db->quoteTableName($table) . '.' . $this->db->quoteColumnName($column) . ' IS ' . $this->db->quoteValue($comment);
}

            
addCommentOnTable() public メソッド (バージョン 2.0.8 から利用可能)

定義位置: yii\db\QueryBuilder::addCommentOnTable()

テーブルにコメントを追加するための SQL コマンドを構築します。

public string addCommentOnTable ( $table, $comment )
$table string

コメントを追加する列を持つテーブル。テーブル名はメソッドによって適切に引用符で囲まれます。

$comment string

追加するコメントのテキスト。コメントはメソッドによって適切に引用符で囲まれます。

戻り値 string

テーブルにコメントを追加するためのSQL文

                public function addCommentOnTable($table, $comment)
{
    return 'COMMENT ON TABLE ' . $this->db->quoteTableName($table) . ' IS ' . $this->db->quoteValue($comment);
}

            
addDefaultValue() public メソッド (バージョン 2.0.13 から利用可能)

定義位置: yii\db\QueryBuilder::addDefaultValue()

既存のテーブルにデフォルト値制約を追加するための SQL コマンドを作成します。

public string addDefaultValue ( $name, $table, $column, $value )
$name string

デフォルト値制約の名前。この名前はメソッドによって適切に引用符で囲まれます。

$table string

デフォルト値制約を追加するテーブル。この名前はメソッドによって適切に引用符で囲まれます。

$column string

制約を追加する列の名前。この名前はメソッドによって適切に引用符で囲まれます。

$value mixed

デフォルト値。

戻り値 string

既存のテーブルにデフォルト値制約を追加するためのSQL文。

例外 yii\base\NotSupportedException

基盤となるDBMSでサポートされていない場合。

                public function addDefaultValue($name, $table, $column, $value)
{
    throw new NotSupportedException($this->db->getDriverName() . ' does not support adding default value constraints.');
}

            
addForeignKey() publicメソッド

定義されている場所: yii\db\QueryBuilder::addForeignKey()

既存のテーブルに外部キー制約を追加するための SQL 文を構築します。

このメソッドは、テーブル名と列名を適切に引用符で囲みます。

public string addForeignKey ( $name, $table, $columns, $refTable, $refColumns, $delete null, $update null )
$name string

外部キー制約の名前。

$table string

外部キー制約を追加するテーブル。

$columns string|array

制約を追加する列の名前。複数の列がある場合は、コンマで区切る、または配列で表現します。

$refTable string

外部キーが参照するテーブル。

$refColumns string|array

外部キーが参照する列の名前。複数の列がある場合は、コンマで区切る、または配列で表現します。

$delete string|null

ON DELETE オプション。ほとんどのDBMSはRESTRICT、CASCADE、NO ACTION、SET DEFAULT、SET NULLをサポートしています。

$update string|null

ON UPDATE オプション。ほとんどのDBMSはRESTRICT、CASCADE、NO ACTION、SET DEFAULT、SET NULLをサポートしています。

戻り値 string

既存のテーブルに外部キー制約を追加するためのSQL文。

                public function addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete = null, $update = null)
{
    $sql = 'ALTER TABLE ' . $this->db->quoteTableName($table)
        . ' ADD CONSTRAINT ' . $this->db->quoteColumnName($name)
        . ' FOREIGN KEY (' . $this->buildColumns($columns) . ')'
        . ' REFERENCES ' . $this->db->quoteTableName($refTable)
        . ' (' . $this->buildColumns($refColumns) . ')';
    if ($delete !== null) {
        $sql .= ' ON DELETE ' . $delete;
    }
    if ($update !== null) {
        $sql .= ' ON UPDATE ' . $update;
    }
    return $sql;
}

            
addPrimaryKey() publicメソッド

定義されている場所: yii\db\QueryBuilder::addPrimaryKey()

既存のテーブルに主キー制約を追加するための SQL 文を構築します。

public string addPrimaryKey ( $name, $table, $columns )
$name string

主キー制約の名前。

$table string

主キー制約を追加するテーブル。

$columns string|array

主キーを構成する列名のコンマ区切り文字列または配列。

戻り値 string

既存のテーブルに主キー制約を追加するためのSQL文。

                public function addPrimaryKey($name, $table, $columns)
{
    if (is_string($columns)) {
        $columns = preg_split('/\s*,\s*/', $columns, -1, PREG_SPLIT_NO_EMPTY);
    }
    foreach ($columns as $i => $col) {
        $columns[$i] = $this->db->quoteColumnName($col);
    }
    return 'ALTER TABLE ' . $this->db->quoteTableName($table) . ' ADD CONSTRAINT '
        . $this->db->quoteColumnName($name) . ' PRIMARY KEY ('
        . implode(', ', $columns) . ')';
}

            
addUnique() publicメソッド (バージョン2.0.13から利用可能)

定義されている場所: yii\db\QueryBuilder::addUnique()

既存のテーブルに一意制約を追加するための SQL コマンドを作成します。

public string addUnique ( $name, $table, $columns )
$name string

一意制約の名前。この名前はメソッドによって適切に引用符で囲まれます。

$table string

一意制約を追加するテーブル。この名前はメソッドによって適切に引用符で囲まれます。

$columns string|array

制約を追加する列の名前。複数の列がある場合は、コンマで区切ります。この名前はメソッドによって適切に引用符で囲まれます。

戻り値 string

既存のテーブルに一意制約を追加するためのSQL文。

                public function addUnique($name, $table, $columns)
{
    if (is_string($columns)) {
        $columns = preg_split('/\s*,\s*/', $columns, -1, PREG_SPLIT_NO_EMPTY);
    }
    foreach ($columns as $i => $col) {
        $columns[$i] = $this->db->quoteColumnName($col);
    }
    return 'ALTER TABLE ' . $this->db->quoteTableName($table) . ' ADD CONSTRAINT '
        . $this->db->quoteColumnName($name) . ' UNIQUE ('
        . implode(', ', $columns) . ')';
}

            
alterColumn() publicメソッド

列の定義を変更するための SQL 文を構築します。

public string alterColumn ( $table, $column, $type )
$table string

列を変更するテーブル。テーブル名はメソッドによって適切に引用符で囲まれます。

$column string

変更する列の名前。この名前はメソッドによって適切に引用符で囲まれます。

$type string

新しい列の型。getColumnType()メソッドは、抽象的な列の型(もしあれば)を物理的な型に変換するために呼び出されます。抽象的な型として認識されないものは、生成されたSQLにそのまま残されます。例えば、'string'は'varchar(255)'に変換され、'string not null'は'varchar(255) not null'になります。PostgreSQL固有の構文(例:`SET NOT NULL`)も使用できます。

戻り値 string

列の定義を変更するためのSQL文。

                public function alterColumn($table, $column, $type)
{
    $columnName = $this->db->quoteColumnName($column);
    $tableName = $this->db->quoteTableName($table);
    // https://github.com/yiisoft/yii2/issues/4492
    // https://www.postgresql.org/docs/9.1/sql-altertable.html
    if (preg_match('/^(DROP|SET|RESET)\s+/i', $type)) {
        return "ALTER TABLE {$tableName} ALTER COLUMN {$columnName} {$type}";
    }
    $type = 'TYPE ' . $this->getColumnType($type);
    $multiAlterStatement = [];
    $constraintPrefix = preg_replace('/[^a-z0-9_]/i', '', $table . '_' . $column);
    if (preg_match('/\s+DEFAULT\s+(["\']?\w*["\']?)/i', $type, $matches)) {
        $type = preg_replace('/\s+DEFAULT\s+(["\']?\w*["\']?)/i', '', $type);
        $multiAlterStatement[] = "ALTER COLUMN {$columnName} SET DEFAULT {$matches[1]}";
    } else {
        // safe to drop default even if there was none in the first place
        $multiAlterStatement[] = "ALTER COLUMN {$columnName} DROP DEFAULT";
    }
    $type = preg_replace('/\s+NOT\s+NULL/i', '', $type, -1, $count);
    if ($count) {
        $multiAlterStatement[] = "ALTER COLUMN {$columnName} SET NOT NULL";
    } else {
        // remove additional null if any
        $type = preg_replace('/\s+NULL/i', '', $type);
        // safe to drop not null even if there was none in the first place
        $multiAlterStatement[] = "ALTER COLUMN {$columnName} DROP NOT NULL";
    }
    if (preg_match('/\s+CHECK\s+\((.+)\)/i', $type, $matches)) {
        $type = preg_replace('/\s+CHECK\s+\((.+)\)/i', '', $type);
        $multiAlterStatement[] = "ADD CONSTRAINT {$constraintPrefix}_check CHECK ({$matches[1]})";
    }
    $type = preg_replace('/\s+UNIQUE/i', '', $type, -1, $count);
    if ($count) {
        $multiAlterStatement[] = "ADD UNIQUE ({$columnName})";
    }
    // add what's left at the beginning
    array_unshift($multiAlterStatement, "ALTER COLUMN {$columnName} {$type}");
    return 'ALTER TABLE ' . $tableName . ' ' . implode(', ', $multiAlterStatement);
}

            
batchInsert() publicメソッド

バッチ INSERT SQL 文を生成します。

例えば、

$sql = $queryBuilder->batchInsert('user', ['name', 'age'], [
    ['Tom', 30],
    ['Jane', 20],
    ['Linda', 25],
]);

各行の値は、対応する列名と一致する必要があります。

このメソッドは、列名を適切にエスケープし、挿入する値を適切に引用符で囲みます。

public string batchInsert ( $table, $columns, $rows, &$params = [] )
$table string

新しい行を挿入するテーブル。

$columns array

列名。

$rows array|Generator

テーブルに一括挿入する行。

$params array

バインドパラメータ。このパラメータは2.0.14から存在します。

戻り値 string

一括INSERT SQL文。

                public function batchInsert($table, $columns, $rows, &$params = [])
{
    if (empty($rows)) {
        return '';
    }
    $schema = $this->db->getSchema();
    if (($tableSchema = $schema->getTableSchema($table)) !== null) {
        $columnSchemas = $tableSchema->columns;
    } else {
        $columnSchemas = [];
    }
    $values = [];
    foreach ($rows as $row) {
        $vs = [];
        foreach ($row as $i => $value) {
            if (isset($columns[$i], $columnSchemas[$columns[$i]])) {
                $value = $columnSchemas[$columns[$i]]->dbTypecast($value);
            }
            if (is_string($value)) {
                $value = $schema->quoteValue($value);
            } elseif (is_float($value)) {
                // ensure type cast always has . as decimal separator in all locales
                $value = StringHelper::floatToString($value);
            } elseif ($value === true) {
                $value = 'TRUE';
            } elseif ($value === false) {
                $value = 'FALSE';
            } elseif ($value === null) {
                $value = 'NULL';
            } elseif ($value instanceof ExpressionInterface) {
                $value = $this->buildExpression($value, $params);
            }
            $vs[] = $value;
        }
        $values[] = '(' . implode(', ', $vs) . ')';
    }
    if (empty($values)) {
        return '';
    }
    foreach ($columns as $i => $name) {
        $columns[$i] = $schema->quoteColumnName($name);
    }
    return 'INSERT INTO ' . $schema->quoteTableName($table)
    . ' (' . implode(', ', $columns) . ') VALUES ' . implode(', ', $values);
}

            
bindParam() publicメソッド (バージョン2.0.14から利用可能)

定義されている場所: yii\db\QueryBuilder::bindParam()

PARAM_PREFIX を使用して $params 配列に $value を追加するためのヘルパーメソッド。

public string bindParam ( $value, &$params )
$value string|null
$params array

参照渡し。

戻り値 string

$params配列内のプレースホルダー名。

                public function bindParam($value, &$params)
{
    $phName = self::PARAM_PREFIX . count($params);
    $params[$phName] = $value;
    return $phName;
}

            
build() publicメソッド

定義されている場所: yii\db\QueryBuilder::build()

yii\db\Query オブジェクトから SELECT SQL 文を生成します。

public array build ( $query, $params = [] )
$query yii\db\Query

SQL文を生成するyii\db\Queryオブジェクト。

$params array

生成されたSQL文にバインドされるパラメータ。これらのパラメータは、クエリ構築プロセス中に生成された追加のパラメータと共に結果に含まれます。

戻り値 array

生成されたSQL文(配列の最初の要素)と、SQL文にバインドされる対応するパラメータ(配列の2番目の要素)。返されるパラメータには、`$params`で提供されたパラメータが含まれます。

                public function build($query, $params = [])
{
    $query = $query->prepare($this);
    $params = empty($params) ? $query->params : array_merge($params, $query->params);
    $clauses = [
        $this->buildSelect($query->select, $params, $query->distinct, $query->selectOption),
        $this->buildFrom($query->from, $params),
        $this->buildJoin($query->join, $params),
        $this->buildWhere($query->where, $params),
        $this->buildGroupBy($query->groupBy),
        $this->buildHaving($query->having, $params),
    ];
    $sql = implode($this->separator, array_filter($clauses));
    $sql = $this->buildOrderByAndLimit($sql, $query->orderBy, $query->limit, $query->offset);
    if (!empty($query->orderBy)) {
        foreach ($query->orderBy as $expression) {
            if ($expression instanceof ExpressionInterface) {
                $this->buildExpression($expression, $params);
            }
        }
    }
    if (!empty($query->groupBy)) {
        foreach ($query->groupBy as $expression) {
            if ($expression instanceof ExpressionInterface) {
                $this->buildExpression($expression, $params);
            }
        }
    }
    $union = $this->buildUnion($query->union, $params);
    if ($union !== '') {
        $sql = "($sql){$this->separator}$union";
    }
    $with = $this->buildWithQueries($query->withQueries, $params);
    if ($with !== '') {
        $sql = "$with{$this->separator}$sql";
    }
    return [$sql, $params];
}

            
buildAndCondition() publicメソッド
2.0.14から非推奨。代わりに`buildCondition()`を使用してください。

定義されている場所: yii\db\QueryBuilder::buildAndCondition()

AND または OR 演算子で 2 つ以上の SQL 式を接続します。

public string buildAndCondition ( $operator, $operands, &$params )
$operator string

オペランドを連結するために使用する演算子

$operands array

連結するSQL式。

$params array

設定されるバインディングパラメータ

戻り値 string

生成されたSQL式

                public function buildAndCondition($operator, $operands, &$params)
{
    array_unshift($operands, $operator);
    return $this->buildCondition($operands, $params);
}

            
buildBetweenCondition() public メソッド
2.0.14から非推奨。代わりに`buildCondition()`を使用してください。

定義されている場所: yii\db\QueryBuilder::buildBetweenCondition()

BETWEEN 演算子を使用した SQL 式を作成します。

public string buildBetweenCondition ( $operator, $operands, &$params )
$operator string

使用する演算子(例: BETWEEN または NOT BETWEEN

$operands array

最初のオペランドはカラム名です。2番目と3番目のオペランドは、カラムの値が含まれるべき範囲を記述します。

$params array

設定されるバインディングパラメータ

戻り値 string

生成されたSQL式

例外 yii\base\InvalidArgumentException

オペランドの数が間違っている場合。

                public function buildBetweenCondition($operator, $operands, &$params)
{
    array_unshift($operands, $operator);
    return $this->buildCondition($operands, $params);
}

            
buildColumns() public メソッド

定義されている場所: yii\db\QueryBuilder::buildColumns()

列を処理し、必要に応じて適切に引用符で囲みます。

すべてのカラムをカンマで区切った文字列に結合します。

public string buildColumns ( $columns )
$columns string|array

処理するカラム

戻り値 string

処理結果

                public function buildColumns($columns)
{
    if (!is_array($columns)) {
        if (strpos($columns, '(') !== false) {
            return $columns;
        }
        $rawColumns = $columns;
        $columns = preg_split('/\s*,\s*/', $columns, -1, PREG_SPLIT_NO_EMPTY);
        if ($columns === false) {
            throw new InvalidArgumentException("$rawColumns is not valid columns.");
        }
    }
    foreach ($columns as $i => $column) {
        if ($column instanceof ExpressionInterface) {
            $columns[$i] = $this->buildExpression($column);
        } elseif (strpos($column, '(') === false) {
            $columns[$i] = $this->db->quoteColumnName($column);
        }
    }
    return implode(', ', $columns);
}

            
buildCondition() public メソッド

定義されている場所: yii\db\QueryBuilder::buildCondition()

条件の指定を解析し、対応する SQL 式を生成します。

public string buildCondition ( $condition, &$params )
$condition string|array|yii\db\ExpressionInterface

条件の指定。条件の指定方法については、yii\db\Query::where() を参照してください。

$params array

設定されるバインディングパラメータ

戻り値 string

生成されたSQL式

                public function buildCondition($condition, &$params)
{
    if (is_array($condition)) {
        if (empty($condition)) {
            return '';
        }
        $condition = $this->createConditionFromArray($condition);
    }
    if ($condition instanceof ExpressionInterface) {
        return $this->buildExpression($condition, $params);
    }
    return (string)$condition;
}

            
buildExistsCondition() public メソッド
2.0.14から非推奨。代わりに`buildCondition()`を使用してください。

定義されている場所: yii\db\QueryBuilder::buildExistsCondition()

EXISTS 演算子を使用した SQL 式を作成します。

public string buildExistsCondition ( $operator, $operands, &$params )
$operator string

使用する演算子(例: EXISTS または NOT EXISTS

$operands array

サブクエリを表す yii\db\Query オブジェクトを1つだけ含みます。

$params array

設定されるバインディングパラメータ

戻り値 string

生成されたSQL式

例外 yii\base\InvalidArgumentException

オペランドが yii\db\Query オブジェクトでない場合。

                public function buildExistsCondition($operator, $operands, &$params)
{
    array_unshift($operands, $operator);
    return $this->buildCondition($operands, $params);
}

            
buildExpression() public メソッド (バージョン 2.0.14 から利用可能)

定義されている場所: yii\db\QueryBuilder::buildExpression()

与えられた $expression を構築します。

参照

public string buildExpression ( yii\db\ExpressionInterface $expression, &$params = [] )
$expression yii\db\ExpressionInterface

構築する式

$params array

生成されたSQL文にバインドされるパラメータ。これらのパラメータは、式構築中に生成された追加のパラメータと共に結果に含まれます。

戻り値 string

DBMSに渡す前に引用符で囲まれたり、エンコードされたりしないSQL文

例外 yii\base\InvalidArgumentException

$expression の構築がこの QueryBuilder でサポートされていない場合。

                public function buildExpression(ExpressionInterface $expression, &$params = [])
{
    $builder = $this->getExpressionBuilder($expression);
    return $builder->build($expression, $params);
}

            
buildFrom() public メソッド

定義されている場所: yii\db\QueryBuilder::buildFrom()

public string buildFrom ( $tables, &$params )
$tables array
$params array

設定されるバインディングパラメータ

戻り値 string

yii\db\Query::$from から構築されたFROM句。

                public function buildFrom($tables, &$params)
{
    if (empty($tables)) {
        return '';
    }
    $tables = $this->quoteTableNames($tables, $params);
    return 'FROM ' . implode(', ', $tables);
}

            
buildGroupBy() public メソッド

定義されている場所: yii\db\QueryBuilder::buildGroupBy()

public string buildGroupBy ( $columns )
$columns array
戻り値 string

GROUP BY句

                public function buildGroupBy($columns)
{
    if (empty($columns)) {
        return '';
    }
    foreach ($columns as $i => $column) {
        if ($column instanceof ExpressionInterface) {
            $columns[$i] = $this->buildExpression($column);
        } elseif (strpos($column, '(') === false) {
            $columns[$i] = $this->db->quoteColumnName($column);
        }
    }
    return 'GROUP BY ' . implode(', ', $columns);
}

            
buildHashCondition() public メソッド
2.0.14から非推奨。代わりに`buildCondition()`を使用してください。

定義されている場所: yii\db\QueryBuilder::buildHashCondition()

列と値のペアに基づいて条件を作成します。

public string buildHashCondition ( $condition, &$params )
$condition array

条件の指定。

$params array

設定されるバインディングパラメータ

戻り値 string

生成されたSQL式

                public function buildHashCondition($condition, &$params)
{
    return $this->buildCondition(new HashCondition($condition), $params);
}

            
buildHaving() public メソッド

定義されている場所: yii\db\QueryBuilder::buildHaving()

public string buildHaving ( $condition, &$params )
$condition string|array
$params array

設定されるバインディングパラメータ

戻り値 string

yii\db\Query::$having から構築されたHAVING句。

                public function buildHaving($condition, &$params)
{
    $having = $this->buildCondition($condition, $params);
    return $having === '' ? '' : 'HAVING ' . $having;
}

            
buildInCondition() public メソッド
2.0.14から非推奨。代わりに`buildCondition()`を使用してください。

定義されている場所: yii\db\QueryBuilder::buildInCondition()

IN 演算子を使用した SQL 式を作成します。

public string buildInCondition ( $operator, $operands, &$params )
$operator string

使用する演算子(例: IN または NOT IN

$operands array

最初のオペランドはカラム名です。配列の場合、複合IN条件が生成されます。2番目のオペランドは、カラムの値がその中に含まれるべき値の配列です。空の配列の場合、演算子がINであれば生成された式はfalseの値になり、演算子がNOT INであれば空になります。

$params array

設定されるバインディングパラメータ

戻り値 string

生成されたSQL式

例外 yii\db\Exception

オペランドの数が間違っている場合。

                public function buildInCondition($operator, $operands, &$params)
{
    array_unshift($operands, $operator);
    return $this->buildCondition($operands, $params);
}

            
buildJoin() public メソッド

定義されている場所: yii\db\QueryBuilder::buildJoin()

public string buildJoin ( $joins, &$params )
$joins array
$params array

設定されるバインディングパラメータ

戻り値 string

yii\db\Query::$joinから構築されたJOIN句。

例外 yii\db\Exception

$joinsパラメータが正しい形式でない場合

                public function buildJoin($joins, &$params)
{
    if (empty($joins)) {
        return '';
    }
    foreach ($joins as $i => $join) {
        if (!is_array($join) || !isset($join[0], $join[1])) {
            throw new Exception('A join clause must be specified as an array of join type, join table, and optionally join condition.');
        }
        // 0:join type, 1:join table, 2:on-condition (optional)
        list($joinType, $table) = $join;
        $tables = $this->quoteTableNames((array)$table, $params);
        $table = reset($tables);
        $joins[$i] = "$joinType $table";
        if (isset($join[2])) {
            $condition = $this->buildCondition($join[2], $params);
            if ($condition !== '') {
                $joins[$i] .= ' ON ' . $condition;
            }
        }
    }
    return implode($this->separator, $joins);
}

            
buildLikeCondition() publicメソッド
2.0.14から非推奨。代わりに`buildCondition()`を使用してください。

定義先: yii\db\QueryBuilder::buildLikeCondition()

LIKE 演算子を使用した SQL 式を作成します。

public string buildLikeCondition ( $operator, $operands, &$params )
$operator string

使用する演算子(例: LIKENOT LIKEOR LIKEOR NOT LIKE

$operands array

2つまたは3つのオペランドの配列

  • 最初のオペランドは列名です。
  • 2番目のオペランドは、列値を比較する単一値または値の配列です。空の配列の場合、演算子がLIKEまたはOR LIKEの場合は生成された式はfalse値になり、演算子がNOT LIKEまたはOR NOT LIKEの場合は空になります。
  • オプションの3番目のオペランドを指定して、値内の特殊文字のエスケープ方法を指定することもできます。オペランドは、特殊文字とそのエスケープされた対応物とのマッピングの配列である必要があります。このオペランドが指定されていない場合、デフォルトのエスケープマッピングが使用されます。値は既にエスケープされており、エスケープを適用する必要がないことを示すために、falseまたは空の配列を使用できます。エスケープマッピングを使用する場合(または3番目のオペランドが指定されていない場合)、値は自動的にパーセント文字のペアで囲まれます。
$params array

設定されるバインディングパラメータ

戻り値 string

生成されたSQL式

例外 yii\base\InvalidArgumentException

オペランドの数が間違っている場合。

                public function buildLikeCondition($operator, $operands, &$params)
{
    array_unshift($operands, $operator);
    return $this->buildCondition($operands, $params);
}

            
buildLimit() publicメソッド
public string buildLimit ( $limit, $offset )
$limit 整数
$offset 整数
戻り値 string

LIMIT句とOFFSET句

                public function buildLimit($limit, $offset)
{
    $sql = '';
    if ($this->hasLimit($limit)) {
        $sql = 'LIMIT ' . $limit;
    }
    if ($this->hasOffset($offset)) {
        $sql .= ' OFFSET ' . $offset;
    }
    return ltrim($sql);
}

            
buildNotCondition() publicメソッド
2.0.14から非推奨。代わりに`buildCondition()`を使用してください。

定義先: yii\db\QueryBuilder::buildNotCondition()

NOT 演算子を使用して SQL 式を反転します。

public string buildNotCondition ( $operator, $operands, &$params )
$operator string

オペランドを連結するために使用する演算子

$operands array

連結するSQL式。

$params array

設定されるバインディングパラメータ

戻り値 string

生成されたSQL式

例外 yii\base\InvalidArgumentException

オペランドの数が間違っている場合。

                public function buildNotCondition($operator, $operands, &$params)
{
    array_unshift($operands, $operator);
    return $this->buildCondition($operands, $params);
}

            
buildOrderBy() publicメソッド
public string buildOrderBy ( $columns )
$columns array
戻り値 string

yii\db\Query::$orderByから構築されたORDER BY句。

                public function buildOrderBy($columns)
{
    if (empty($columns)) {
        return '';
    }
    $orders = [];
    foreach ($columns as $name => $direction) {
        if ($direction instanceof ExpressionInterface) {
            $orders[] = $this->buildExpression($direction);
        } else {
            $orders[] = $this->db->quoteColumnName($name) . ($direction === SORT_DESC ? ' DESC' : '');
        }
    }
    return 'ORDER BY ' . implode(', ', $orders);
}

            
buildOrderByAndLimit() publicメソッド

定義先: yii\db\QueryBuilder::buildOrderByAndLimit()

ORDER BY および LIMIT/OFFSET 句を構築し、指定された SQL に追加します。

public string buildOrderByAndLimit ( $sql, $orderBy, $limit, $offset )
$sql string

(ORDER BY/LIMIT/OFFSETなしの)既存のSQL

$orderBy array

並べ替え対象の列。このパラメータの指定方法の詳細については、yii\db\Query::orderBy()を参照してください。

$limit 整数

制限数。yii\db\Query::limit()を参照してください。

$offset 整数

オフセット数。yii\db\Query::offset()を参照してください。

戻り値 string

(存在する場合)ORDER BY/LIMIT/OFFSETが追加されたSQL

                public function buildOrderByAndLimit($sql, $orderBy, $limit, $offset)
{
    $orderBy = $this->buildOrderBy($orderBy);
    if ($orderBy !== '') {
        $sql .= $this->separator . $orderBy;
    }
    $limit = $this->buildLimit($limit, $offset);
    if ($limit !== '') {
        $sql .= $this->separator . $limit;
    }
    return $sql;
}

            
buildSelect() publicメソッド
public string buildSelect ( $columns, &$params, $distinct false, $selectOption null )
$columns array
$params array

設定されるバインディングパラメータ

$distinct boolean
$selectOption string|null
戻り値 string

yii\db\Query::$selectから構築されたSELECT句。

                public function buildSelect($columns, &$params, $distinct = false, $selectOption = null)
{
    $select = $distinct ? 'SELECT DISTINCT' : 'SELECT';
    if ($selectOption !== null) {
        $select .= ' ' . $selectOption;
    }
    if (empty($columns)) {
        return $select . ' *';
    }
    foreach ($columns as $i => $column) {
        if ($column instanceof ExpressionInterface) {
            if (is_int($i)) {
                $columns[$i] = $this->buildExpression($column, $params);
            } else {
                $columns[$i] = $this->buildExpression($column, $params) . ' AS ' . $this->db->quoteColumnName($i);
            }
        } elseif ($column instanceof Query) {
            list($sql, $params) = $this->build($column, $params);
            $columns[$i] = "($sql) AS " . $this->db->quoteColumnName($i);
        } elseif (is_string($i) && $i !== $column) {
            if (strpos($column, '(') === false) {
                $column = $this->db->quoteColumnName($column);
            }
            $columns[$i] = "$column AS " . $this->db->quoteColumnName($i);
        } elseif (strpos($column, '(') === false) {
            if (preg_match('/^(.*?)(?i:\s+as\s+|\s+)([\w\-_\.]+)$/', $column, $matches)) {
                $columns[$i] = $this->db->quoteColumnName($matches[1]) . ' AS ' . $this->db->quoteColumnName($matches[2]);
            } else {
                $columns[$i] = $this->db->quoteColumnName($column);
            }
        }
    }
    return $select . ' ' . implode(', ', $columns);
}

            
buildSimpleCondition() publicメソッド
2.0.14から非推奨。代わりに`buildCondition()`を使用してください。

定義先: yii\db\QueryBuilder::buildSimpleCondition()

"column" operator value のような SQL 式を作成します。

public string buildSimpleCondition ( $operator, $operands, &$params )
$operator string

使用する演算子。何でも使用できます(例: ><=など)。

$operands array

2つの列名を含みます。

$params array

設定されるバインディングパラメータ

戻り値 string

生成されたSQL式

例外 yii\base\InvalidArgumentException

オペランドの数が間違っている場合。

                public function buildSimpleCondition($operator, $operands, &$params)
{
    array_unshift($operands, $operator);
    return $this->buildCondition($operands, $params);
}

            
buildUnion() publicメソッド
public string buildUnion ( $unions, &$params )
$unions array
$params array

設定されるバインディングパラメータ

戻り値 string

yii\db\Query::$unionから構築されたUNION句。

                public function buildUnion($unions, &$params)
{
    if (empty($unions)) {
        return '';
    }
    $result = '';
    foreach ($unions as $i => $union) {
        $query = $union['query'];
        if ($query instanceof Query) {
            list($unions[$i]['query'], $params) = $this->build($query, $params);
        }
        $result .= 'UNION ' . ($union['all'] ? 'ALL ' : '') . '( ' . $unions[$i]['query'] . ' ) ';
    }
    return trim($result);
}

            
buildWhere() publicメソッド
public string buildWhere ( $condition, &$params )
$condition string|array
$params array

設定されるバインディングパラメータ

戻り値 string

yii\db\Query::$whereから構築されたWHERE句。

                public function buildWhere($condition, &$params)
{
    $where = $this->buildCondition($condition, $params);
    return $where === '' ? '' : 'WHERE ' . $where;
}

            
buildWithQueries() public メソッド (バージョン 2.0.35 から利用可能)
public string buildWithQueries ( $withs, &$params )
$withs array

各WITHクエリの設定

$params array

設定されるバインディングパラメータ

戻り値 string

ネストされたクエリを含むクエリの前処理済みWITH句

                public function buildWithQueries($withs, &$params)
{
    if (empty($withs)) {
        return '';
    }
    $recursive = false;
    $result = [];
    foreach ($withs as $i => $with) {
        if ($with['recursive']) {
            $recursive = true;
        }
        $query = $with['query'];
        if ($query instanceof Query) {
            list($with['query'], $params) = $this->build($query, $params);
        }
        $result[] = $with['alias'] . ' AS (' . $with['query'] . ')';
    }
    return 'WITH ' . ($recursive ? 'RECURSIVE ' : '') . implode(', ', $result);
}

            
canGetProperty() public メソッド

定義位置: yii\base\BaseObject::canGetProperty()

プロパティを読み取ることができるかどうかを示す値を返します。

プロパティは、以下の場合に読み取り可能です。

  • クラスが指定された名前と関連付けられたゲッターメソッドを持つ場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスが指定された名前のメンバ変数を持つ場合($checkVars が true の場合)。

関連情報: canSetProperty().

public boolean canGetProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

戻り値 boolean

プロパティが読み取り可能かどうか

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() public メソッド

定義位置: yii\base\BaseObject::canSetProperty()

プロパティを設定できるかどうかを示す値を返します。

プロパティは、以下の場合に書き込み可能です。

  • クラスが指定された名前と関連付けられたセッターメソッドを持つ場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスが指定された名前のメンバ変数を持つ場合($checkVars が true の場合)。

関連情報: canGetProperty().

public boolean canSetProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

戻り値 boolean

プロパティが書き込み可能かどうか

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

            
checkIntegrity() public メソッド

整合性チェックを有効または無効にするための SQL 文を構築します。

public string checkIntegrity ( $check true, $schema '', $table '' )
$check boolean

整合性チェックのオン/オフを切り替えます。

$schema string

テーブルのスキーマ。

$table string

テーブル名。

戻り値 string

整合性チェックのためのSQL文

                public function checkIntegrity($check = true, $schema = '', $table = '')
{
    $enable = $check ? 'ENABLE' : 'DISABLE';
    $schema = $schema ?: $this->db->getSchema()->defaultSchema;
    $tableNames = $table ? [$table] : $this->db->getSchema()->getTableNames($schema);
    $viewNames = $this->db->getSchema()->getViewNames($schema);
    $tableNames = array_diff($tableNames, $viewNames);
    $command = '';
    foreach ($tableNames as $tableName) {
        $tableName = $this->db->quoteTableName("{$schema}.{$tableName}");
        $command .= "ALTER TABLE $tableName $enable TRIGGER ALL; ";
    }
    // enable to have ability to alter several tables
    $this->db->getMasterPdo()->setAttribute(\PDO::ATTR_EMULATE_PREPARES, true);
    return $command;
}

            
className() public static メソッド
2.0.14以降非推奨。PHP >= 5.5では、代わりに::classを使用してください。

定義位置: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
戻り値 string

このクラスの完全修飾名。

                public static function className()
{
    return get_called_class();
}

            
createConditionFromArray() public メソッド (バージョン 2.0.14 から利用可能)

定義位置: yii\db\QueryBuilder::createConditionFromArray()

yii\db\Query::where() で説明されている配列形式で定義された $condition を、$conditionClasses マップに従って yii\db\condition\ConditionInterface のインスタンスに変換します。

関連情報: $conditionClasses.

public yii\db\conditions\ConditionInterface createConditionFromArray ( $condition )
$condition string|array

                public function createConditionFromArray($condition)
{
    if (isset($condition[0])) { // operator format: operator, operand 1, operand 2, ...
        $operator = strtoupper(array_shift($condition));
        if (isset($this->conditionClasses[$operator])) {
            $className = $this->conditionClasses[$operator];
        } else {
            $className = 'yii\db\conditions\SimpleCondition';
        }
        /** @var ConditionInterface $className */
        return $className::fromArrayDefinition($operator, $condition);
    }
    // hash format: 'column1' => 'value1', 'column2' => 'value2', ...
    return new HashCondition($condition);
}

            
createIndex() public メソッド

新しいインデックスを作成するための SQL 文を構築します。

関連情報: https://www.postgresql.org/docs/8.2/sql-createindex.html.

public string createIndex ( $name, $table, $columns, $unique false )
$name string

インデックス名。メソッドによって適切に引用符で囲まれます。

$table string

新しいインデックスが作成されるテーブル。テーブル名はメソッドによって適切に引用符で囲まれます。

$columns string|array

インデックスに含める列。複数の列がある場合は、カンマで区切るか、配列を使用して指定します。各列名は、名前に括弧がない限り、メソッドによって適切に引用符で囲まれます。

$unique boolean|string

一意インデックス制約にするかどうか。一意インデックスを作成するにはtrueまたはINDEX_UNIQUE を、デフォルトのインデックス型を使用して一意でないインデックスを作成するにはfalseを、または使用するインデックスメソッドを指定するには以下の定数のいずれかを渡します。INDEX_B_TREEINDEX_HASHINDEX_GISTINDEX_GIN

戻り値 string

新しいインデックスを作成するためのSQL文。

                public function createIndex($name, $table, $columns, $unique = false)
{
    if ($unique === self::INDEX_UNIQUE || $unique === true) {
        $index = false;
        $unique = true;
    } else {
        $index = $unique;
        $unique = false;
    }
    return ($unique ? 'CREATE UNIQUE INDEX ' : 'CREATE INDEX ') .
    $this->db->quoteTableName($name) . ' ON ' .
    $this->db->quoteTableName($table) .
    ($index !== false ? " USING $index" : '') .
    ' (' . $this->buildColumns($columns) . ')';
}

            
createTable() public メソッド

定義位置: yii\db\QueryBuilder::createTable()

新しい DB テーブルを作成するための SQL 文を構築します。

新しいテーブルの列は、名前と定義のペア(例:'name' => 'string')で指定する必要があります。ここで、nameは列名を表し、メソッドによって適切に引用符で囲まれます。definitionは列の種類を表し、抽象的なDBの種類を含んでいる必要があります。getColumnType() メソッドは、抽象的な型を物理的な型に変換するために呼び出されます。

列が定義のみで指定されている場合(例:'PRIMARY KEY (name, type)')、生成されたSQLに直接挿入されます。

例えば、

$sql = $queryBuilder->createTable('user', [
 'id' => 'pk',
 'name' => 'string',
 'age' => 'integer',
 'column_name double precision null default null', # definition only example
]);
public string createTable ( $table, $columns, $options null )
$table string

作成するテーブル名。メソッドによって適切に引用符で囲まれます。

$columns array

新しいテーブルの列(name => definition)。

$options string|null

生成されたSQLに追加される追加のSQLフラグメント。

戻り値 string

新しいDBテーブルを作成するためのSQL文。

                public function createTable($table, $columns, $options = null)
{
    $cols = [];
    foreach ($columns as $name => $type) {
        if (is_string($name)) {
            $cols[] = "\t" . $this->db->quoteColumnName($name) . ' ' . $this->getColumnType($type);
        } else {
            $cols[] = "\t" . $type;
        }
    }
    $sql = 'CREATE TABLE ' . $this->db->quoteTableName($table) . " (\n" . implode(",\n", $cols) . "\n)";
    return $options === null ? $sql : $sql . ' ' . $options;
}

            
createView() public メソッド (バージョン 2.0.14 から利用可能)

定義位置: yii\db\QueryBuilder::createView()

SQL ビューを作成します。

public string createView ( $viewName, $subQuery )
$viewName string

作成するビューの名前。

$subQuery string|yii\db\Query

ビューを定義するSELECT文。文字列またはyii\db\Queryオブジェクトのいずれかです。

戻り値 string

CREATE VIEW SQL文。

                public function createView($viewName, $subQuery)
{
    if ($subQuery instanceof Query) {
        list($rawQuery, $params) = $this->build($subQuery);
        array_walk(
            $params,
            function (&$param) {
                $param = $this->db->quoteValue($param);
            }
        );
        $subQuery = strtr($rawQuery, $params);
    }
    return 'CREATE VIEW ' . $this->db->quoteTableName($viewName) . ' AS ' . $subQuery;
}

            
defaultConditionClasses() protected メソッド (バージョン 2.0.14 から利用可能)

デフォルトの条件クラスの配列を含みます。クエリビルダーのデフォルトの条件クラスを変更したい場合は、このメソッドを拡張してください。$conditionClassesのドキュメントを参照してください。

protected array defaultConditionClasses ( )

                protected function defaultConditionClasses()
{
    return array_merge(parent::defaultConditionClasses(), [
        'ILIKE' => 'yii\db\conditions\LikeCondition',
        'NOT ILIKE' => 'yii\db\conditions\LikeCondition',
        'OR ILIKE' => 'yii\db\conditions\LikeCondition',
        'OR NOT ILIKE' => 'yii\db\conditions\LikeCondition',
    ]);
}

            
defaultExpressionBuilders() protectedメソッド (バージョン2.0.14から利用可能)

デフォルトの式ビルダーの配列を含みます。このクエリビルダーのデフォルトの式ビルダーを変更したい場合は、このメソッドを拡張してオーバーライドしてください。$expressionBuildersのドキュメントを参照してください。

protected array defaultExpressionBuilders ( )

                protected function defaultExpressionBuilders()
{
    return array_merge(parent::defaultExpressionBuilders(), [
        'yii\db\ArrayExpression' => 'yii\db\pgsql\ArrayExpressionBuilder',
        'yii\db\JsonExpression' => 'yii\db\pgsql\JsonExpressionBuilder',
    ]);
}

            
delete() publicメソッド

定義位置: yii\db\QueryBuilder::delete()

DELETE SQL 文を作成します。

例えば、

$sql = $queryBuilder->delete('user', 'status = 0');

このメソッドは、テーブル名とカラム名を適切にエスケープします。

public string delete ( $table, $condition, &$params )
$table string

データが削除されるテーブル。

$condition array|string

WHERE句に設定される条件。条件の指定方法については、yii\db\Query::where()を参照してください。

$params array

このメソッドによって変更されるバインディングパラメータ。後でDBコマンドにバインドするために使用されます。

戻り値 string

DELETE SQL文

                public function delete($table, $condition, &$params)
{
    $sql = 'DELETE FROM ' . $this->db->quoteTableName($table);
    $where = $this->buildWhere($condition, $params);
    return $where === '' ? $sql : $sql . ' ' . $where;
}

            
dropCheck() publicメソッド (バージョン2.0.13から利用可能)

定義位置: yii\db\QueryBuilder::dropCheck()

チェック制約を削除するための SQL コマンドを作成します。

public string dropCheck ( $name, $table )
$name string

削除するチェック制約の名前。このメソッドによって適切に引用符で囲まれます。

$table string

チェック制約を削除するテーブル。このメソッドによって適切に引用符で囲まれます。

戻り値 string

チェック制約を削除するSQL文。

                public function dropCheck($name, $table)
{
    return 'ALTER TABLE ' . $this->db->quoteTableName($table)
        . ' DROP CONSTRAINT ' . $this->db->quoteColumnName($name);
}

            
dropColumn() publicメソッド

定義位置: yii\db\QueryBuilder::dropColumn()

DB 列を削除するための SQL 文を構築します。

public string dropColumn ( $table, $column )
$table string

カラムを削除するテーブル。このメソッドによって適切に引用符で囲まれます。

$column string

削除するカラムの名前。このメソッドによって適切に引用符で囲まれます。

戻り値 string

DBカラムを削除するSQL文。

                public function dropColumn($table, $column)
{
    return 'ALTER TABLE ' . $this->db->quoteTableName($table)
        . ' DROP COLUMN ' . $this->db->quoteColumnName($column);
}

            
dropCommentFromColumn() publicメソッド (バージョン2.0.8から利用可能)

定義位置: yii\db\QueryBuilder::dropCommentFromColumn()

列にコメントを追加するための SQL コマンドを構築します。

public string dropCommentFromColumn ( $table, $column )
$table string

コメントを追加する列を持つテーブル。テーブル名はメソッドによって適切に引用符で囲まれます。

$column string

コメントを追加する列の名前。列名はメソッドによって適切に引用符で囲まれます。

戻り値 string

列にコメントを追加するためのSQL文

                public function dropCommentFromColumn($table, $column)
{
    return 'COMMENT ON COLUMN ' . $this->db->quoteTableName($table) . '.' . $this->db->quoteColumnName($column) . ' IS NULL';
}

            
dropCommentFromTable() publicメソッド (バージョン2.0.8から利用可能)

定義位置: yii\db\QueryBuilder::dropCommentFromTable()

テーブルにコメントを追加するための SQL コマンドを構築します。

public string dropCommentFromTable ( $table )
$table string

コメントを追加する列を持つテーブル。テーブル名はメソッドによって適切に引用符で囲まれます。

戻り値 string

列にコメントを追加するためのSQL文

                public function dropCommentFromTable($table)
{
    return 'COMMENT ON TABLE ' . $this->db->quoteTableName($table) . ' IS NULL';
}

            
dropDefaultValue() publicメソッド (バージョン2.0.13から利用可能)

定義位置: yii\db\QueryBuilder::dropDefaultValue()

デフォルト値制約を削除するための SQL コマンドを作成します。

public string dropDefaultValue ( $name, $table )
$name string

削除するデフォルト値制約の名前。このメソッドによって適切に引用符で囲まれます。

$table string

デフォルト値制約を削除するテーブル。このメソッドによって適切に引用符で囲まれます。

戻り値 string

デフォルト値制約を削除するSQL文。

例外 yii\base\NotSupportedException

基盤となるDBMSでサポートされていない場合。

                public function dropDefaultValue($name, $table)
{
    throw new NotSupportedException($this->db->getDriverName() . ' does not support dropping default value constraints.');
}

            
dropForeignKey() publicメソッド

定義位置: yii\db\QueryBuilder::dropForeignKey()

外部キー制約を削除するための SQL 文を構築します。

public string dropForeignKey ( $name, $table )
$name string

削除する外部キー制約の名前。このメソッドによって適切に引用符で囲まれます。

$table string

外部キーを削除するテーブル。このメソッドによって適切に引用符で囲まれます。

戻り値 string

外部キー制約を削除するSQL文。

                public function dropForeignKey($name, $table)
{
    return 'ALTER TABLE ' . $this->db->quoteTableName($table)
        . ' DROP CONSTRAINT ' . $this->db->quoteColumnName($name);
}

            
dropIndex() publicメソッド

インデックスを削除するための SQL 文を構築します。

public string dropIndex ( $name, $table )
$name string

削除するインデックスの名前。このメソッドによって適切に引用符で囲まれます。

$table string

インデックスを削除するテーブル。このメソッドによって適切に引用符で囲まれます。

戻り値 string

インデックスを削除するSQL文。

                public function dropIndex($name, $table)
{
    if (strpos($table, '.') !== false && strpos($name, '.') === false) {
        if (strpos($table, '{{') !== false) {
            $table = preg_replace('/\\{\\{(.*?)\\}\\}/', '\1', $table);
            list($schema, $table) = explode('.', $table);
            if (strpos($schema, '%') === false) {
                $name = $schema . '.' . $name;
            } else {
                $name = '{{' . $schema . '.' . $name . '}}';
            }
        } else {
            list($schema) = explode('.', $table);
            $name = $schema . '.' . $name;
        }
    }
    return 'DROP INDEX ' . $this->db->quoteTableName($name);
}

            
dropPrimaryKey() publicメソッド

定義位置: yii\db\QueryBuilder::dropPrimaryKey()

既存のテーブルから主キー制約を削除するための SQL 文を構築します。

public string dropPrimaryKey ( $name, $table )
$name string

削除する主キー制約の名前。

$table string

主キー制約を削除するテーブル。

戻り値 string

既存のテーブルから主キー制約を削除するSQL文。

                public function dropPrimaryKey($name, $table)
{
    return 'ALTER TABLE ' . $this->db->quoteTableName($table)
        . ' DROP CONSTRAINT ' . $this->db->quoteColumnName($name);
}

            
dropTable() publicメソッド

定義位置: yii\db\QueryBuilder::dropTable()

DB テーブルを削除するための SQL 文を構築します。

public string dropTable ( $table )
$table string

削除するテーブル。名前はこのメソッドによって適切に引用符で囲まれます。

戻り値 string

DBテーブルを削除するためのSQL文。

                public function dropTable($table)
{
    return 'DROP TABLE ' . $this->db->quoteTableName($table);
}

            
dropUnique() publicメソッド (バージョン2.0.13から使用可能)

定義場所: yii\db\QueryBuilder::dropUnique()

一意制約を削除するための SQL コマンドを作成します。

public string dropUnique ( $name, $table )
$name string

削除する一意制約の名前。名前はこのメソッドによって適切に引用符で囲まれます。

$table string

一意制約を削除するテーブル。名前はこのメソッドによって適切に引用符で囲まれます。

戻り値 string

一意制約を削除するためのSQL文。

                public function dropUnique($name, $table)
{
    return 'ALTER TABLE ' . $this->db->quoteTableName($table)
        . ' DROP CONSTRAINT ' . $this->db->quoteColumnName($name);
}

            
dropView() publicメソッド (バージョン2.0.14から使用可能)

定義場所: yii\db\QueryBuilder::dropView()

SQL ビューを削除します。

public string dropView ( $viewName )
$viewName string

削除するビューの名前。

戻り値 string

DROP VIEW SQL文。

                public function dropView($viewName)
{
    return 'DROP VIEW ' . $this->db->quoteTableName($viewName);
}

            
executeResetSequence() publicメソッド (バージョン2.0.16から使用可能)

定義場所: yii\db\QueryBuilder::executeResetSequence()

テーブルの主キーのシーケンス値をリセットするための SQL 文を実行します。

実行の理由は、一部のデータベース(Oracleなど)ではこれを行うために複数のクエリが必要なためです。シーケンスは、挿入される次の新しい行の主キーが指定された値、または既存の最大値+1になるようにリセットされます。

public void executeResetSequence ( $table, $value null )
$table string

主キーシーケンスをリセットするテーブルの名前

$value array|string|null

挿入される次の新しい行の主キーの値。これが設定されていない場合、次の新しい行の主キーは既存の最大値+1になります。

例外 yii\base\NotSupportedException

基盤となるDBMSでサポートされていない場合

                public function executeResetSequence($table, $value = null)
{
    $this->db->createCommand()->resetSequence($table, $value)->execute();
}

            
extractAlias() protectedメソッド (バージョン2.0.24から使用可能)

定義場所: yii\db\QueryBuilder::extractAlias()

テーブルエイリアスが存在する場合はそれを抽出し、存在しない場合はfalseを返します。

protected boolean|array extractAlias ( $table )
$table

                protected function extractAlias($table)
{
    if (preg_match('/^(.*?)(?i:\s+as|)\s+([^ ]+)$/', $table, $matches)) {
        return $matches;
    }
    return false;
}

            
getColumnType() publicメソッド

定義場所: yii\db\QueryBuilder::getColumnType()

抽象的な列の種類を物理的な列の種類に変換します。

$typeMapで指定された型マップを使用して変換が行われます。以下の抽象的なカラム型がサポートされています(対応する物理的な型を説明するためにMySQLの例を使用)。

  • pk: 自動インクリメント主キー型、"int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY"に変換されます。
  • bigpk: 自動インクリメント主キー型、"bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY"に変換されます。
  • upk: 符号なし自動インクリメント主キー型、"int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY"に変換されます。
  • char: char型、"char(1)"に変換されます。
  • string: string型、"varchar(255)"に変換されます。
  • text: 長いstring型、"text"に変換されます。
  • smallint: 小さな整数型、"smallint(6)"に変換されます。
  • integer: 整数型、"int(11)"に変換されます。
  • bigint: 大きい整数型、"bigint(20)"に変換されます。
  • boolean: boolean型、"tinyint(1)"に変換されます。
  • float`: 浮動小数点数型、"float"に変換されます。
  • decimal: 10進数型、"decimal"に変換されます。
  • datetime: datetime型、"datetime"に変換されます。
  • timestamp: timestamp型、"timestamp"に変換されます。
  • time: time型、"time"に変換されます。
  • date: date型、"date"に変換されます。
  • money: money型、"decimal(19,4)"に変換されます。
  • binary: バイナリデータ型、"blob"に変換されます。

抽象型がスペースで区切られた2つ以上の部分を含む場合(例:"string NOT NULL")、最初の部分のみが変換され、残りの部分は変換された結果に追加されます。たとえば、'string NOT NULL'は'varchar(255) NOT NULL'に変換されます。

一部の抽象型では、型に直接丸括弧で囲んで長さと精度の制約を指定することもできます。たとえば、string(32)はMySQLデータベースで"varchar(32)"に変換されます。基盤となるDBMSがその型の制約をサポートしていない場合、無視されます。

$typeMapに型が見つからない場合、変更せずに返されます。

public string getColumnType ( $type )
$type string|yii\db\ColumnSchemaBuilder

抽象的なカラム型

戻り値 string

物理的なカラム型。

                public function getColumnType($type)
{
    if ($type instanceof ColumnSchemaBuilder) {
        $type = $type->__toString();
    }
    if (isset($this->typeMap[$type])) {
        return $this->typeMap[$type];
    } elseif (preg_match('/^(\w+)\((.+?)\)(.*)$/', $type, $matches)) {
        if (isset($this->typeMap[$matches[1]])) {
            return preg_replace('/\(.+\)/', '(' . $matches[2] . ')', $this->typeMap[$matches[1]]) . $matches[3];
        }
    } elseif (preg_match('/^(\w+)\s+/', $type, $matches)) {
        if (isset($this->typeMap[$matches[1]])) {
            return preg_replace('/^\w+/', $this->typeMap[$matches[1]], $type);
        }
    }
    return $type;
}

            
getExpressionBuilder() publicメソッド (バージョン2.0.14から使用可能)

定義場所: yii\db\QueryBuilder::getExpressionBuilder()

$expression に適した yii\db\ExpressionBuilderInterface のオブジェクトを取得します。

$expressionBuilders配列を使用して、適切なビルダークラスを検索します。

$expressionBuildersも参照してください。

public yii\db\ExpressionBuilderInterface getExpressionBuilder ( yii\db\ExpressionInterface $expression )
$expression yii\db\ExpressionInterface
例外 yii\base\InvalidArgumentException

$expression の構築がこの QueryBuilder でサポートされていない場合。

                public function getExpressionBuilder(ExpressionInterface $expression)
{
    $className = get_class($expression);
    if (!isset($this->expressionBuilders[$className])) {
        foreach (array_reverse($this->expressionBuilders) as $expressionClass => $builderClass) {
            if (is_subclass_of($expression, $expressionClass)) {
                $this->expressionBuilders[$className] = $builderClass;
                break;
            }
        }
        if (!isset($this->expressionBuilders[$className])) {
            throw new InvalidArgumentException('Expression of class ' . $className . ' can not be built in ' . get_class($this));
        }
    }
    if ($this->expressionBuilders[$className] === __CLASS__) {
        return $this;
    }
    if (!is_object($this->expressionBuilders[$className])) {
        $this->expressionBuilders[$className] = new $this->expressionBuilders[$className]($this);
    }
    return $this->expressionBuilders[$className];
}

            
hasLimit() protectedメソッド

定義場所: yii\db\QueryBuilder::hasLimit()

指定された制限が有効かどうかを確認します。

protected boolean hasLimit ( $limit )
$limit mixed

指定されたlimit

戻り値 boolean

limitが有効かどうか

                protected function hasLimit($limit)
{
    return ($limit instanceof ExpressionInterface) || ctype_digit((string)$limit);
}

            
hasMethod() publicメソッド

定義場所: yii\base\BaseObject::hasMethod()

メソッドが定義されているかどうかを示す値を返します。

デフォルトの実装は、PHP関数method_exists()の呼び出しです。PHPマジックメソッド__call()を実装した場合は、このメソッドをオーバーライドできます。

public boolean hasMethod ( $name )
$name string

メソッド名

戻り値 boolean

メソッドが定義されているかどうか

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasOffset() protectedメソッド

定義場所: yii\db\QueryBuilder::hasOffset()

指定されたオフセットが有効かどうかを確認します。

protected boolean hasOffset ( $offset )
$offset mixed

指定されたオフセット

戻り値 boolean

オフセットが有効かどうか

                protected function hasOffset($offset)
{
    return ($offset instanceof ExpressionInterface) || ctype_digit((string)$offset) && (string)$offset !== '0';
}

            
hasProperty() publicメソッド

定義済み場所: yii\base\BaseObject::hasProperty()

プロパティが定義されているかどうかを示す値を返します。

プロパティは、以下の場合に定義済みとみなされます。

  • 指定された名前と関連付けられたゲッターまたはセッターメソッドがクラスに存在する場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスが指定された名前のメンバ変数を持つ場合($checkVars が true の場合)。

参照

public boolean hasProperty ( $name, $checkVars true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

戻り値 boolean

プロパティが定義されているかどうか

                public function hasProperty($name, $checkVars = true)
{
    return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}

            
init() publicメソッド

定義済み場所: yii\db\QueryBuilder::init()

オブジェクトを初期化します。

このメソッドは、オブジェクトが指定された設定で初期化された後、コンストラクタの最後に呼び出されます。

public void init ( )

                public function init()
{
    parent::init();
    $this->expressionBuilders = array_merge($this->defaultExpressionBuilders(), $this->expressionBuilders);
    $this->conditionClasses = array_merge($this->defaultConditionClasses(), $this->conditionClasses);
}

            
insert() publicメソッド

INSERT SQL 文を作成します。

例えば、`php $sql = $queryBuilder->insert('user', [

'name' => 'Sam',
'age' => 30,

], $params); ` このメソッドは、テーブル名とカラム名を適切にエスケープします。

public string insert ( $table, $columns, &$params )
$table string

新しい行を挿入するテーブル。

$columns array|yii\db\Query

テーブルに挿入するカラムデータ(name => value)またはINSERT INTO ... SELECT SQL文を実行するためのQueryのインスタンス。 Queryの受け渡しは、バージョン2.0.11以降で利用可能です。

$params array

このメソッドによって生成されるバインディングパラメータ。後でDBコマンドにバインドする必要があります。

戻り値 string

INSERT SQL文

                public function insert($table, $columns, &$params)
{
    return parent::insert($table, $this->normalizeTableRowData($table, $columns), $params);
}

            
prepareInsertSelectSubQuery() protectedメソッド (バージョン2.0.11以降で利用可能)

定義済み場所: yii\db\QueryBuilder::prepareInsertSelectSubQuery()

INSERT INTO ... SELECT SQL文のselectサブクエリとフィールド名を準備します。

protected array prepareInsertSelectSubQuery ( $columns, $schema, $params = [] )
$columns yii\db\Query

SELECTクエリを表すオブジェクト。

$schema yii\db\Schema

カラム名をクォートするためのスキーマオブジェクト。

$params array

生成されたSQL文にバインドされるパラメータ。これらのパラメータは、クエリ構築プロセス中に生成された追加のパラメータと共に結果に含まれます。

戻り値 array

カラム名、値、パラメータの配列。

例外 yii\base\InvalidArgumentException

クエリが名前付きパラメータのみを含まない場合。

                protected function prepareInsertSelectSubQuery($columns, $schema, $params = [])
{
    if (!is_array($columns->select) || empty($columns->select) || in_array('*', $columns->select)) {
        throw new InvalidArgumentException('Expected select query object with enumerated (named) parameters');
    }
    list($values, $params) = $this->build($columns, $params);
    $names = [];
    $values = ' ' . $values;
    foreach ($columns->select as $title => $field) {
        if (is_string($title)) {
            $names[] = $schema->quoteColumnName($title);
        } elseif (preg_match('/^(.*?)(?i:\s+as\s+|\s+)([\w\-_\.]+)$/', $field, $matches)) {
            $names[] = $schema->quoteColumnName($matches[2]);
        } else {
            $names[] = $schema->quoteColumnName($field);
        }
    }
    return [$names, $values, $params];
}

            
prepareInsertValues() protectedメソッド (バージョン2.0.14以降で利用可能)

定義済み場所: yii\db\QueryBuilder::prepareInsertValues()

INSERT SQL文のVALUES部分を準備します。

protected array prepareInsertValues ( $table, $columns, $params = [] )
$table string

新しい行を挿入するテーブル。

$columns array|yii\db\Query

テーブルに挿入するカラムデータ(name => value)またはINSERT INTO ... SELECT SQL文を実行するためのQueryのインスタンス。

$params array

このメソッドによって生成されるバインディングパラメータ。後でDBコマンドにバインドする必要があります。

戻り値 array

カラム名、プレースホルダ、値、パラメータの配列。

                protected function prepareInsertValues($table, $columns, $params = [])
{
    $schema = $this->db->getSchema();
    $tableSchema = $schema->getTableSchema($table);
    $columnSchemas = $tableSchema !== null ? $tableSchema->columns : [];
    $names = [];
    $placeholders = [];
    $values = ' DEFAULT VALUES';
    if ($columns instanceof Query) {
        list($names, $values, $params) = $this->prepareInsertSelectSubQuery($columns, $schema, $params);
    } else {
        foreach ($columns as $name => $value) {
            $names[] = $schema->quoteColumnName($name);
            $value = isset($columnSchemas[$name]) ? $columnSchemas[$name]->dbTypecast($value) : $value;
            if ($value instanceof ExpressionInterface) {
                $placeholders[] = $this->buildExpression($value, $params);
            } elseif ($value instanceof \yii\db\Query) {
                list($sql, $params) = $this->build($value, $params);
                $placeholders[] = "($sql)";
            } else {
                $placeholders[] = $this->bindParam($value, $params);
            }
        }
    }
    return [$names, $placeholders, $values, $params];
}

            
prepareUpdateSets() protectedメソッド (バージョン2.0.14以降で利用可能)

定義済み場所: yii\db\QueryBuilder::prepareUpdateSets()

UPDATE SQL文のSET部分を準備します。

protected array prepareUpdateSets ( $table, $columns, $params = [] )
$table string

更新対象のテーブル。

$columns array

更新対象のカラムデータ(name => value)。

$params array

このメソッドによって変更されるバインディングパラメータ。後でDBコマンドにバインドするために使用されます。

戻り値 array

UPDATE SQL文のSET部分の配列(最初の配列要素)とパラメータ(2番目の配列要素)。

                protected function prepareUpdateSets($table, $columns, $params = [])
{
    $tableSchema = $this->db->getTableSchema($table);
    $columnSchemas = $tableSchema !== null ? $tableSchema->columns : [];
    $sets = [];
    foreach ($columns as $name => $value) {
        $value = isset($columnSchemas[$name]) ? $columnSchemas[$name]->dbTypecast($value) : $value;
        if ($value instanceof ExpressionInterface) {
            $placeholder = $this->buildExpression($value, $params);
        } else {
            $placeholder = $this->bindParam($value, $params);
        }
        $sets[] = $this->db->quoteColumnName($name) . '=' . $placeholder;
    }
    return [$sets, $params];
}

            
prepareUpsertColumns() protectedメソッド (バージョン2.0.14以降で利用可能)
protected array prepareUpsertColumns ( $table, $insertColumns, $updateColumns, &$constraints = [] )
$table string
$insertColumns array|yii\db\Query
$updateColumns array|boolean
$constraints yii\db\Constraint[]

このパラメータは、一致した制約リストを受け取ります。制約はカラム名で一意になります。

                protected function prepareUpsertColumns($table, $insertColumns, $updateColumns, &$constraints = [])
{
    if ($insertColumns instanceof Query) {
        list($insertNames) = $this->prepareInsertSelectSubQuery($insertColumns, $this->db->getSchema());
    } else {
        $insertNames = array_map([$this->db, 'quoteColumnName'], array_keys($insertColumns));
    }
    $uniqueNames = $this->getTableUniqueColumnNames($table, $insertNames, $constraints);
    $uniqueNames = array_map([$this->db, 'quoteColumnName'], $uniqueNames);
    if ($updateColumns !== true) {
        return [$uniqueNames, $insertNames, null];
    }
    return [$uniqueNames, $insertNames, array_diff($insertNames, $uniqueNames)];
}

            
renameColumn() publicメソッド

定義済み場所: yii\db\QueryBuilder::renameColumn()

列の名前を変更するための SQL 文を構築します。

public string renameColumn ( $table, $oldName, $newName )
$table string

カラム名を変更するテーブル。名前はメソッドによって適切にクォートされます。

$oldName string

カラムの古い名前。名前はメソッドによって適切にクォートされます。

$newName string

カラムの新しい名前。名前はメソッドによって適切にクォートされます。

戻り値 string

DBカラムの名前変更のためのSQL文。

                public function renameColumn($table, $oldName, $newName)
{
    return 'ALTER TABLE ' . $this->db->quoteTableName($table)
        . ' RENAME COLUMN ' . $this->db->quoteColumnName($oldName)
        . ' TO ' . $this->db->quoteColumnName($newName);
}

            
renameTable() publicメソッド

DB テーブルの名前を変更するための SQL 文を構築します。

public string renameTable ( $oldName, $newName )
$oldName string

名前変更対象のテーブル。メソッドによって適切に引用符で囲まれます。

$newName string

新しいテーブル名。メソッドによって適切に引用符で囲まれます。

戻り値 string

DBテーブルの名前変更のためのSQL文。

                public function renameTable($oldName, $newName)
{
    return 'ALTER TABLE ' . $this->db->quoteTableName($oldName) . ' RENAME TO ' . $this->db->quoteTableName($newName);
}

            
resetSequence() publicメソッド

テーブルの主キーのシーケンス値をリセットするための SQL 文を作成します。

シーケンスは、挿入される次の新しい行の主キーが指定された値または1になるようにリセットされます。

public string resetSequence ( $tableName, $value null )
$tableName string

主キーシーケンスをリセットするテーブルの名前

$value mixed

挿入される次の新しい行の主キーの値。設定されていない場合、次の新しい行の主キーの値は1になります。

戻り値 string

シーケンスをリセットするためのSQL文。

例外 yii\base\InvalidArgumentException

テーブルが存在しない場合、またはテーブルに関連付けられたシーケンスがない場合。

                public function resetSequence($tableName, $value = null)
{
    $table = $this->db->getTableSchema($tableName);
    if ($table !== null && $table->sequenceName !== null) {
        // c.f. https://www.postgresql.org/docs/8.1/functions-sequence.html
        $sequence = $this->db->quoteTableName($table->sequenceName);
        $tableName = $this->db->quoteTableName($tableName);
        if ($value === null) {
            $key = $this->db->quoteColumnName(reset($table->primaryKey));
            $value = "(SELECT COALESCE(MAX({$key}),0) FROM {$tableName})+1";
        } else {
            $value = (int) $value;
        }
        return "SELECT SETVAL('$sequence',$value,false)";
    } elseif ($table === null) {
        throw new InvalidArgumentException("Table not found: $tableName");
    }
    throw new InvalidArgumentException("There is not sequence associated with table '$tableName'.");
}

            
selectExists() publicメソッド (バージョン2.0.8から利用可能)

定義されている場所: yii\db\QueryBuilder::selectExists()

SELECT EXISTS() SQL 文を作成します。

public string selectExists ( $rawSql )
$rawSql string

生の形式で選択するサブクエリ。

戻り値 string

SELECT EXISTS() SQL文。

                public function selectExists($rawSql)
{
    return 'SELECT EXISTS(' . $rawSql . ')';
}

            
setConditionClasses() publicメソッド (バージョン2.0.14.2から利用可能)

定義されている場所: yii\db\QueryBuilder::setConditionClasses()

$conditionClassesプロパティのセッター。

関連情報: $conditionClasses.

public void setConditionClasses ( $classes )
$classes string[]

条件エイリアスと条件クラスのマップ。例えば

['LIKE' => yii\db\condition\LikeCondition::class]

                public function setConditionClasses($classes)
{
    $this->conditionClasses = array_merge($this->conditionClasses, $classes);
}

            
setExpressionBuilders() publicメソッド (バージョン2.0.14から利用可能)

定義されている場所: yii\db\QueryBuilder::setExpressionBuilders()

$expressionBuildersプロパティのセッター。

$expressionBuildersも参照してください。

public void setExpressionBuilders ( $builders )
$builders string[]

$expressionBuilders プロパティで事前に定義されているものとマージされるべきビルダーの配列。

                public function setExpressionBuilders($builders)
{
    $this->expressionBuilders = array_merge($this->expressionBuilders, $builders);
}

            
truncateTable() publicメソッド

DBテーブルを切り捨てるSQL文を構築します。

他のデータベースではデフォルトで実行される操作と一貫性を保つために、PGSQLのIDを明示的に再開します。

public string truncateTable ( $table )
$table string

切り捨てられるテーブル。メソッドによって適切に引用符で囲まれます。

戻り値 string

DBテーブルを切り捨てるためのSQL文。

                public function truncateTable($table)
{
    return 'TRUNCATE TABLE ' . $this->db->quoteTableName($table) . ' RESTART IDENTITY';
}

            
update() publicメソッド

UPDATE SQL文を作成します。

例えば、

$params = [];
$sql = $queryBuilder->update('user', ['status' => 1], 'age > 30', $params);

このメソッドは、テーブル名とカラム名を適切にエスケープします。

public string update ( $table, $columns, $condition, &$params )
$table string

更新対象のテーブル。

$columns array

更新対象のカラムデータ(name => value)。

$condition array|string

WHERE句に設定される条件。条件の指定方法については、yii\db\Query::where()を参照してください。

$params array

このメソッドによって変更されるバインディングパラメータ。後でDBコマンドにバインドするために使用されます。

戻り値 string

UPDATE SQL

                public function update($table, $columns, $condition, &$params)
{
    return parent::update($table, $this->normalizeTableRowData($table, $columns), $condition, $params);
}

            
upsert() publicメソッド (バージョン2.0.14から利用可能)

データベーステーブルに、行がまだ存在しない場合(一意制約に一致する場合)、行を挿入するか、存在する場合は更新するSQL文を作成します。

例えば、

$sql = $queryBuilder->upsert('pages', [
    'name' => 'Front page',
    'url' => 'https://example.com/', // url is unique
    'visits' => 0,
], [
    'visits' => new \yii\db\Expression('visits + 1'),
], $params);

このメソッドは、テーブル名とカラム名を適切にエスケープします。

参照

public string upsert ( $table, $insertColumns, $updateColumns, &$params )
$table string

新しい行が挿入/更新されるテーブル。

$insertColumns array|yii\db\Query

テーブルに挿入される列データ(名前 => 値)、またはINSERT INTO ... SELECT SQL文を実行するためのyii\db\Queryのインスタンス。

$updateColumns array|boolean

列データが既に存在する場合に更新される列データ(名前 => 値)。trueが渡された場合、列データは挿入列データと一致するように更新されます。falseが渡された場合、列データが既に存在する場合は更新されません。

$params array

このメソッドによって生成されるバインディングパラメータ。後でDBコマンドにバインドする必要があります。

戻り値 string

結果のSQL。

例外 yii\base\NotSupportedException

基盤となるDBMSでサポートされていない場合。

                public function upsert($table, $insertColumns, $updateColumns, &$params)
{
    $insertColumns = $this->normalizeTableRowData($table, $insertColumns);
    if (!is_bool($updateColumns)) {
        $updateColumns = $this->normalizeTableRowData($table, $updateColumns);
    }
    if (version_compare($this->db->getServerVersion(), '9.5', '<')) {
        return $this->oldUpsert($table, $insertColumns, $updateColumns, $params);
    }
    return $this->newUpsert($table, $insertColumns, $updateColumns, $params);
}