1 follower

Class yii\db\Migration

継承yii\db\Migration » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable, yii\db\MigrationInterface
使用されるトレイトyii\db\SchemaBuilderTrait
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/db/Migration.php

Migration は、データベースマイグレーションを表現するための基本クラスです。

Migration は、「yii migrate」コマンドと一緒に使用するように設計されています。

Migration の各子クラスは、子クラス名で識別される個別のデータベースマイグレーションを表します。

各マイグレーション内では、up() メソッドをオーバーライドして、データベースを「アップグレード」するためのロジックを含める必要があります。一方、down() メソッドは「ダウングレード」ロジック用です。「yii migrate」コマンドは、アプリケーションで利用可能なすべてのマイグレーションを管理します。

データベースがトランザクションをサポートしている場合は、safeUp() および safeDown() もオーバーライドして、アップグレードまたはダウングレード中に何か問題が発生した場合に、マイグレーション全体をまとめて元に戻せるようにすることができます。

一部の DBMS における一部の DB クエリはトランザクションに入れることができないことに注意してください。いくつかの例については、暗黙的なコミットを参照してください。このような場合、代わりに up()down() を実装する必要があります。

Migration は、データベースのデータとスキーマを操作するための便利なメソッドを多数提供します。たとえば、insert() メソッドを使用すると、データベーステーブルに簡単にデータを挿入できます。また、createTable() メソッドを使用すると、データベーステーブルを作成できます。yii\db\Command の同じメソッドと比較すると、これらのメソッドは、メソッドのパラメータと実行時間を示す追加情報を表示します。これは、マイグレーションを適用するときに役立つ場合があります。

Migration の詳細と使用法については、マイグレーションに関するガイド記事を参照してください。

パブリックプロパティ

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

プロパティ 説明 定義元
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$compact boolean コンソール出力が圧縮されるかどうかを示します。 yii\db\Migration
$db yii\db\Connection|array|string このマイグレーションが動作する DB 接続オブジェクト、または DB 接続のアプリケーションコンポーネント ID。 yii\db\Migration
$maxSqlOutputLength integer 出力される SQL の最大文字数。 yii\db\Migration

パブリックメソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。 yii\base\Component
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているか、つまり定義されていて null でないかを確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティを null に設定します。 yii\base\Component
addColumn() 新しい DB 列を追加するための SQL ステートメントを作成および実行します。 yii\db\Migration
addCommentOnColumn() 列にコメントを追加するための SQL ステートメントを作成および実行します。 yii\db\Migration
addCommentOnTable() テーブルにコメントを追加するための SQL ステートメントを作成します。 yii\db\Migration
addForeignKey() 既存のテーブルに外部キー制約を追加するための SQL ステートメントを作成します。 yii\db\Migration
addPrimaryKey() 主キーを作成するための SQL ステートメントを作成および実行します。 yii\db\Migration
alterColumn() 列の定義を変更するための SQL ステートメントを作成および実行します。 yii\db\Migration
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
batchInsert() バッチ INSERT SQL ステートメントを作成および実行します。 yii\db\Migration
behaviors() このコンポーネントが動作するビヘイビアのリストを返します。 yii\base\Component
bigInteger() bigint 列を作成します。 yii\db\SchemaBuilderTrait
bigPrimaryKey() 大きな主キー列を作成します。 yii\db\SchemaBuilderTrait
binary() バイナリ列を作成します。 yii\db\SchemaBuilderTrait
boolean() ブール列を作成します。 yii\db\SchemaBuilderTrait
canGetProperty() プロパティが読み取り可能かどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
char() char 列を作成します。 yii\db\SchemaBuilderTrait
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
createIndex() 新しいインデックスを作成するための SQL ステートメントを作成および実行します。 yii\db\Migration
createTable() 新しい DB テーブルを作成するための SQL ステートメントを作成および実行します。 yii\db\Migration
date() 日付列を作成します。 yii\db\SchemaBuilderTrait
dateTime() datetime 列を作成します。 yii\db\SchemaBuilderTrait
decimal() decimal 列を作成します。 yii\db\SchemaBuilderTrait
delete() DELETE SQL ステートメントを作成および実行します。 yii\db\Migration
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
double() double 列を作成します。 yii\db\SchemaBuilderTrait
down() このメソッドには、このマイグレーションを削除するときに実行されるロジックが含まれています。 yii\db\Migration
dropColumn() DBカラムを削除するためのSQLステートメントを構築し、実行します。 yii\db\Migration
dropCommentFromColumn() カラムからコメントを削除するためのSQLステートメントを構築し、実行します。 yii\db\Migration
dropCommentFromTable() テーブルからコメントを削除するためのSQLステートメントを構築します。 yii\db\Migration
dropForeignKey() 外部キー制約を削除するためのSQLステートメントを構築します。 yii\db\Migration
dropIndex() インデックスを削除するためのSQLステートメントを構築し、実行します。 yii\db\Migration
dropPrimaryKey() プライマリキーを削除するためのSQLステートメントを構築し、実行します。 yii\db\Migration
dropTable() DBテーブルを削除するためのSQLステートメントを構築し、実行します。 yii\db\Migration
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
execute() SQLステートメントを実行します。 yii\db\Migration
float() float型のカラムを作成します。 yii\db\SchemaBuilderTrait
getBehavior() 指定された名前のビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
hasEventHandlers() 指定された名前のイベントにハンドラーがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() マイグレーションを初期化します。 yii\db\Migration
insert() INSERT SQLステートメントを作成し、実行します。 yii\db\Migration
integer() integer型のカラムを作成します。 yii\db\SchemaBuilderTrait
json() JSON型のカラムを作成します。 yii\db\SchemaBuilderTrait
money() money型のカラムを作成します。 yii\db\SchemaBuilderTrait
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
primaryKey() プライマリキーのカラムを作成します。 yii\db\SchemaBuilderTrait
renameColumn() カラム名を変更するためのSQLステートメントを構築し、実行します。 yii\db\Migration
renameTable() DBテーブルの名前を変更するためのSQLステートメントを構築し、実行します。 yii\db\Migration
safeDown() このメソッドには、このマイグレーションを削除するときに実行されるロジックが含まれています。 yii\db\Migration
safeUp() このメソッドには、このマイグレーションを適用する際に実行されるロジックが含まれています。 yii\db\Migration
smallInteger() smallint型のカラムを作成します。 yii\db\SchemaBuilderTrait
string() string型のカラムを作成します。 yii\db\SchemaBuilderTrait
text() text型のカラムを作成します。 yii\db\SchemaBuilderTrait
time() time型のカラムを作成します。 yii\db\SchemaBuilderTrait
timestamp() timestamp型のカラムを作成します。 yii\db\SchemaBuilderTrait
tinyInteger() tinyint型のカラムを作成します。tinyintがDBMSでサポートされていない場合は、smallintが使用されます。 yii\db\SchemaBuilderTrait
trigger() イベントをトリガーします。 yii\base\Component
truncateTable() DBテーブルを切り捨てるためのSQLステートメントを構築し、実行します。 yii\db\Migration
up() このメソッドには、このマイグレーションを適用する際に実行されるロジックが含まれています。 yii\db\Migration
update() UPDATE SQLステートメントを作成し、実行します。 yii\db\Migration
upsert() まだ存在しない場合(一意制約に一致する場合)は、データベーステーブルに行を挿入し、存在する場合はそれらを更新するコマンドを作成して実行します。 yii\db\Migration

保護されたメソッド

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

メソッド 説明 定義元
beginCommand() 実行されるコマンドの準備をし、コンソールに出力します。 yii\db\Migration
endCommand() コマンドが実行された後、終了し、経過時間をコンソールに出力します。 yii\db\Migration
getDb() yii\db\Migration

プロパティの詳細

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

$compact public プロパティ(バージョン2.0.13以降で利用可能)

コンソール出力が圧縮されるかどうかを示します。これがtrueに設定されている場合、マイグレーション内で実行された個々のコマンドはコンソールに出力されません。デフォルトはfalseです。言い換えれば、出力はデフォルトで完全に詳細です。

public boolean $compact false
$db public プロパティ

このマイグレーションが動作するDB接続オブジェクト、またはDB接続のアプリケーションコンポーネントID。バージョン2.0.2以降、これはオブジェクトを作成するための構成配列にもなります。

Migrationオブジェクトがmigrateコマンドによって作成される場合、このプロパティはコマンドによって上書きされることに注意してください。コマンドによって提供されるDB接続を使用しない場合は、次のようにinit()メソッドをオーバーライドできます。

public function init()
{
    $this->db = 'db2';
    parent::init();
}
$maxSqlOutputLength public プロパティ(バージョン2.0.13以降で利用可能)

出力されるSQLの最大文字数。長いステートメントを削減し、コンソール出力をよりコンパクトにするのに役立ちます。

メソッドの詳細

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

__call() public メソッド

定義: yii\base\Component::__call()

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

このメソッドは、アタッチされたビヘイビアに指定された名前のメソッドがあるかどうかを確認し、存在する場合は実行します。

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

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

メソッド名

$params array

メソッドのパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

不明なメソッドを呼び出した場合

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() public メソッド

定義: yii\base\Component::__clone()

このメソッドは、既存のオブジェクトを複製してオブジェクトが作成された後に呼び出されます。

古いオブジェクトにアタッチされているため、すべてのビヘイビアを削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() public メソッド

定義: yii\base\BaseObject::__construct()

コンストラクタ。

デフォルトの実装では、次の2つの処理を実行します。

  • 指定された構成$configでオブジェクトを初期化します。
  • init() を呼び出します。

このメソッドが子クラスでオーバーライドされている場合は、次のことが推奨されます。

  • コンストラクターの最後のパラメーターは、ここでの$configのように構成配列です。
  • コンストラクターの最後に親の実装を呼び出します。
public void __construct ( $config = [] )
$config array

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

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public メソッド

定義: yii\base\Component::__get()

コンポーネントプロパティの値を返します。

このメソッドは、次の順序で確認し、それに応じて動作します。

  • getterによって定義されたプロパティ:getterの結果を返す
  • ビヘイビアのプロパティ:ビヘイビアのプロパティ値を返す

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

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

public mixed __get ( $name )
$name string

プロパティ名

return mixed

プロパティ値、またはビヘイビアのプロパティの値

throws yii\base\UnknownPropertyException

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

throws yii\base\InvalidCallException

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

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (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\Component::__isset()

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

このメソッドは、次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティが設定されているかどうかを返します
  • ビヘイビアのプロパティ: プロパティが設定されているかどうかを返します
  • 存在しないプロパティに対しては false を返します

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

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

public boolean __isset ( $name )
$name string

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

return boolean

名前付きプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public メソッド

定義元: yii\base\Component::__set()

コンポーネントプロパティの値を設定します。

このメソッドは、次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティ値を設定します
  • "on xyz"形式のイベント: イベント"xyz"にハンドラーをアタッチします
  • "as xyz"形式のビヘイビア: "xyz"という名前のビヘイビアをアタッチします
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を設定します

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

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

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

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

$value mixed

プロパティ値

throws yii\base\UnknownPropertyException

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

throws yii\base\InvalidCallException

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

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public メソッド

定義元: yii\base\Component::__unset()

コンポーネントプロパティを null に設定します。

このメソッドは、次の順序で確認し、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティ値を null に設定します
  • ビヘイビアのプロパティ: プロパティ値を null に設定します

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

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

public void __unset ( $name )
$name string

プロパティ名

throws yii\base\InvalidCallException

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

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
addColumn() public メソッド

新しい DB 列を追加するための SQL ステートメントを作成および実行します。

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

新しいカラムが追加されるテーブル。テーブル名はメソッドによって適切にクォートされます。

$column string

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

$type string

カラムの型。yii\db\QueryBuilder::getColumnType()メソッドが、抽象カラム型(もしあれば)を物理的なものに変換するために呼び出されます。抽象型として認識されないものは、生成されたSQLに保持されます。たとえば、「string」は「varchar(255)」に変換され、「string not null」は「varchar(255) not null」になります。

                public function addColumn($table, $column, $type)
{
    $time = $this->beginCommand("add column $column $type to table $table");
    $this->db->createCommand()->addColumn($table, $column, $type)->execute();
    if ($type instanceof ColumnSchemaBuilder && $type->comment !== null) {
        $this->db->createCommand()->addCommentOnColumn($table, $column, $type->comment)->execute();
    }
    $this->endCommand($time);
}

            
addCommentOnColumn() public メソッド (バージョン2.0.8以降で利用可能)

列にコメントを追加するための SQL ステートメントを作成および実行します。

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

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

$column string

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

$comment string

追加するコメントのテキスト。コメントはメソッドによって適切にクォートされます。

                public function addCommentOnColumn($table, $column, $comment)
{
    $time = $this->beginCommand("add comment on column $column");
    $this->db->createCommand()->addCommentOnColumn($table, $column, $comment)->execute();
    $this->endCommand($time);
}

            
addCommentOnTable() public メソッド (バージョン2.0.8以降で利用可能)

テーブルにコメントを追加するための SQL ステートメントを作成します。

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

コメントするテーブル。テーブル名はメソッドによって適切にクォートされます。

$comment string

追加するコメントのテキスト。コメントはメソッドによって適切にクォートされます。

                public function addCommentOnTable($table, $comment)
{
    $time = $this->beginCommand("add comment on table $table");
    $this->db->createCommand()->addCommentOnTable($table, $comment)->execute();
    $this->endCommand($time);
}

            
addForeignKey() public メソッド

既存のテーブルに外部キー制約を追加するための SQL ステートメントを作成します。

このメソッドは、テーブル名とカラム名を適切にクォートします。

public void 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

                public function addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete = null, $update = null)
{
    $time = $this->beginCommand("add foreign key $name: $table (" . implode(',', (array) $columns) . ") references $refTable (" . implode(',', (array) $refColumns) . ')');
    $this->db->createCommand()->addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete, $update)->execute();
    $this->endCommand($time);
}

            
addPrimaryKey() public メソッド

主キーを作成するための SQL ステートメントを作成および実行します。

このメソッドは、テーブル名とカラム名を適切にクォートします。

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

主キー制約の名前。

$table string

主キー制約が追加されるテーブル。

$columns string|array

主キーを構成する、カンマ区切りの文字列またはカラムの配列。

                public function addPrimaryKey($name, $table, $columns)
{
    $time = $this->beginCommand("add primary key $name on $table (" . (is_array($columns) ? implode(',', $columns) : $columns) . ')');
    $this->db->createCommand()->addPrimaryKey($name, $table, $columns)->execute();
    $this->endCommand($time);
}

            
alterColumn() public メソッド

列の定義を変更するための SQL ステートメントを作成および実行します。

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

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

$column string

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

$type string

新しいカラムの型。yii\db\QueryBuilder::getColumnType()メソッドが、抽象カラム型(もしあれば)を物理的なものに変換するために呼び出されます。抽象型として認識されないものは、生成されたSQLに保持されます。たとえば、「string」は「varchar(255)」に変換され、「string not null」は「varchar(255) not null」になります。

                public function alterColumn($table, $column, $type)
{
    $time = $this->beginCommand("alter column $column in table $table to $type");
    $this->db->createCommand()->alterColumn($table, $column, $type)->execute();
    if ($type instanceof ColumnSchemaBuilder && $type->comment !== null) {
        $this->db->createCommand()->addCommentOnColumn($table, $column, $type->comment)->execute();
    }
    $this->endCommand($time);
}

            
attachBehavior() public メソッド

定義元: yii\base\Component::attachBehavior()

このコンポーネントにビヘイビアをアタッチします。

このメソッドは、指定された構成に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach() メソッドを呼び出すことによって、ビヘイビアオブジェクトはこのコンポーネントにアタッチされます。

こちらも参照してください: detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの構成。これは次のいずれかになります。

  • yii\base\Behavior オブジェクト
  • ビヘイビアクラスを指定する文字列
  • Yii::createObject() に渡されてビヘイビアオブジェクトを作成するオブジェクト構成配列。
return yii\base\Behavior

ビヘイビアオブジェクト

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public メソッド

定義元: yii\base\Component::attachBehaviors()

コンポーネントにビヘイビアのリストをアタッチします。

各ビヘイビアは、その名前でインデックス付けされ、yii\base\Behavior オブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための構成配列である必要があります。

こちらも参照してください: attachBehavior()

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチされるビヘイビアのリスト

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
batchInsert() public メソッド

バッチ INSERT SQL ステートメントを作成および実行します。

このメソッドは、カラム名を適切にエスケープし、挿入される値をバインドします。

public void batchInsert ( $table, $columns, $rows )
$table string

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

$columns array

カラム名。

$rows array

テーブルに一括挿入される行

                public function batchInsert($table, $columns, $rows)
{
    $time = $this->beginCommand("insert into $table");
    $this->db->createCommand()->batchInsert($table, $columns, $rows)->execute();
    $this->endCommand($time);
}

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

実行されるコマンドの準備をし、コンソールに出力します。

protected float beginCommand ( $description )
$description string

コンソールに出力されるコマンドの説明。

return float

コマンド実行前の時間。経過時間を計算するために使用されます。

                protected function beginCommand($description)
{
    if (!$this->compact) {
        echo "    > $description ...";
    }
    return microtime(true);
}

            
behaviors() public メソッド

定義元: yii\base\Component::behaviors()

このコンポーネントが動作するビヘイビアのリストを返します。

子クラスは、このメソッドをオーバーライドして、自身がどのように振る舞うかを指定できます。

このメソッドの戻り値は、ビヘイビアオブジェクト、またはビヘイビア名でインデックス付けされた構成の配列である必要があります。ビヘイビア構成は、ビヘイビアクラスを指定する文字列、または次の構造の配列のいずれかになります。

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

ビヘイビアクラスは yii\base\Behavior から拡張する必要があることに注意してください。ビヘイビアは、名前を使用するか、匿名でアタッチできます。名前が配列キーとして使用される場合、この名前を使用して、後で getBehavior() を使用してビヘイビアを取得するか、detachBehavior() を使用してデタッチできます。匿名ビヘイビアは、取得またはデタッチできません。

このメソッドで宣言されたビヘイビアは、コンポーネントに自動的に(必要に応じて)アタッチされます。

public array behaviors ( )
return array

ビヘイビアの構成。

                public function behaviors()
{
    return [];
}

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

定義元: yii\db\SchemaBuilderTrait::bigInteger()

bigint 列を作成します。

public yii\db\ColumnSchemaBuilder bigInteger ( $length null )
$length integer|null

カラムのサイズまたは精度定義。このパラメータは、DBMSでサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function bigInteger($length = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_BIGINT, $length);
}

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

定義元: yii\db\SchemaBuilderTrait::bigPrimaryKey()

大きな主キー列を作成します。

public yii\db\ColumnSchemaBuilder bigPrimaryKey ( $length null )
$length integer|null

カラムのサイズまたは精度定義。このパラメータは、DBMSでサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function bigPrimaryKey($length = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_BIGPK, $length);
}

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

定義元: yii\db\SchemaBuilderTrait::binary()

バイナリ列を作成します。

public yii\db\ColumnSchemaBuilder binary ( $length null )
$length integer|null

カラムのサイズまたは精度定義。このパラメータは、DBMSでサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function binary($length = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_BINARY, $length);
}

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

定義元: yii\db\SchemaBuilderTrait::boolean()

ブール列を作成します。

public yii\db\ColumnSchemaBuilder boolean ( )
return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function boolean()
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_BOOLEAN);
}

            
canGetProperty() public メソッド

定義元: yii\base\Component::canGetProperty()

プロパティが読み取り可能かどうかを示す値を返します。

プロパティは、次の場合に読み取ることができます。

  • クラスに、指定された名前に関連付けられた getter メソッドがある場合 (この場合、プロパティ名は case-insensitive です)。
  • クラスに、指定された名前を持つメンバー変数がある場合 ($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合 ($checkBehaviors が true の場合)。

こちらも参照してください: canSetProperty()

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティを読み取ることができるかどうか

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public メソッド

定義元: yii\base\Component::canSetProperty()

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

プロパティが書き込み可能であるための条件は以下のとおりです。

  • クラスが指定された名前に関連付けられたセッターメソッドを持っている場合 (この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前を持つメンバー変数がある場合 ($checkVars が true の場合)。
  • アタッチされたビヘイビアが、指定された名前の書き込み可能なプロパティを持っている場合 ($checkBehaviors が true の場合)。

以下も参照してください: canGetProperty()

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

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

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

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

定義元: yii\db\SchemaBuilderTrait::char()

char 列を作成します。

public yii\db\ColumnSchemaBuilder char ( $length null )
$length integer|null

カラムのサイズ定義、つまり最大文字列長。このパラメーターは、DBMS でサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function char($length = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_CHAR, $length);
}

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

定義元: yii\base\BaseObject::className()

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

public static string className ( )
return string

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

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

            
createIndex() public メソッド

新しいインデックスを作成するための SQL ステートメントを作成および実行します。

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

インデックスの名前。名前はメソッドによって適切にクォートされます。

$table string

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

$columns string|array

インデックスに含める必要があるカラム。複数のカラムがある場合は、カンマで区切るか配列を使用してください。各カラム名はメソッドによって適切にクォートされます。左括弧 "(" を含むカラム名については、クォートはスキップされます。

$unique boolean

作成されたインデックスに UNIQUE 制約を追加するかどうか。

                public function createIndex($name, $table, $columns, $unique = false)
{
    $time = $this->beginCommand('create' . ($unique ? ' unique' : '') . " index $name on $table (" . implode(',', (array) $columns) . ')');
    $this->db->createCommand()->createIndex($name, $table, $columns, $unique)->execute();
    $this->endCommand($time);
}

            
createTable() public メソッド

新しい DB テーブルを作成するための SQL ステートメントを作成および実行します。

新しいテーブルのカラムは、名前と定義のペア(例:'name' => 'string')として指定する必要があります。ここで、name はメソッドによって適切にクォートされるカラム名を表し、定義は抽象 DB 型を含む必要があるカラム型を表します。

yii\db\QueryBuilder::getColumnType() メソッドが、抽象型を物理型に変換するために呼び出されます。

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

使用例:`php class m200000_000000_create_table_fruits extends \yii\db\Migration {

public function safeUp()
{
     $this->createTable('{{%fruits}}', [
         // ...
         'column_name double precision null default null',

public void createTable ( $table, $columns, $options null )
$table string

作成するテーブルの名前。名前はメソッドによって適切にクォートされます。

$columns array

新しいテーブルのカラム(name => definition)。

$options string|null

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

                public function createTable($table, $columns, $options = null)
{
    $time = $this->beginCommand("create table $table");
    $this->db->createCommand()->createTable($table, $columns, $options)->execute();
    foreach ($columns as $column => $type) {
        if ($type instanceof ColumnSchemaBuilder && $type->comment !== null) {
            $this->db->createCommand()->addCommentOnColumn($table, $column, $type->comment)->execute();
        }
    }
    $this->endCommand($time);
}

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

定義元: yii\db\SchemaBuilderTrait::date()

日付列を作成します。

public yii\db\ColumnSchemaBuilder date ( )
return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function date()
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_DATE);
}

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

定義元: yii\db\SchemaBuilderTrait::dateTime()

datetime 列を作成します。

public yii\db\ColumnSchemaBuilder dateTime ( $precision null )
$precision integer|null

カラム値の精度。カラム型に渡される最初のパラメーター、例えば DATETIME(precision)。このパラメーターは、DBMS でサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function dateTime($precision = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_DATETIME, $precision);
}

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

定義元: yii\db\SchemaBuilderTrait::decimal()

decimal 列を作成します。

public yii\db\ColumnSchemaBuilder decimal ( $precision null, $scale null )
$precision integer|null

カラム値の精度。通常、総桁数です。カラム型に渡される最初のパラメーター、例えば DECIMAL(precision, scale)。このパラメーターは、DBMS でサポートされていない場合は無視されます。

$scale integer|null

カラム値のスケール。通常、小数点以下の桁数です。カラム型に渡される 2 番目のパラメーター、例えば DECIMAL(precision, scale)。このパラメーターは、DBMS でサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function decimal($precision = null, $scale = null)
{
    $length = [];
    if ($precision !== null) {
        $length[] = $precision;
    }
    if ($scale !== null) {
        $length[] = $scale;
    }
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_DECIMAL, $length);
}

            
delete() public メソッド

DELETE SQL ステートメントを作成および実行します。

public void delete ( $table, $condition '', $params = [] )
$table string

データの削除元となるテーブル。

$condition 配列|文字列

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

$params array

クエリにバインドされるパラメータ。

                public function delete($table, $condition = '', $params = [])
{
    $time = $this->beginCommand("delete from $table");
    $this->db->createCommand()->delete($table, $condition, $params)->execute();
    $this->endCommand($time);
}

            
detachBehavior() public メソッド

定義元: yii\base\Component::detachBehavior()

コンポーネントからビヘイビアをデタッチします。

ビヘイビアのyii\base\Behavior::detach()メソッドが呼び出されます。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

ビヘイビアの名前。

return yii\base\Behavior|null

切り離されたビヘイビア。ビヘイビアが存在しない場合は null。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public メソッド

定義元: yii\base\Component::detachBehaviors()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

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

定義元: yii\db\SchemaBuilderTrait::double()

double 列を作成します。

public yii\db\ColumnSchemaBuilder double ( $precision null )
$precision integer|null

列の値の精度。列の型に渡される最初のパラメータ(例:DOUBLE(precision))。DBMSでサポートされていない場合、このパラメータは無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function double($precision = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_DOUBLE, $precision);
}

            
down() public メソッド

このメソッドには、このマイグレーションを削除するときに実行されるロジックが含まれています。

デフォルトの実装では、マイグレーションが削除できないことを示す例外がスローされます。子クラスは、対応するマイグレーションを削除できる場合は、このメソッドをオーバーライドできます。

public false|void|mixed down ( )
return false|void|mixed

マイグレーションが失敗し、それ以上進めるべきでないことを示すには、false値を返します。その他の戻り値はすべて、マイグレーションが成功したことを意味します。

                public function down()
{
    $transaction = $this->db->beginTransaction();
    try {
        if ($this->safeDown() === false) {
            $transaction->rollBack();
            return false;
        }
        $transaction->commit();
    } catch (\Exception $e) {
        $this->printException($e);
        $transaction->rollBack();
        return false;
    } catch (\Throwable $e) {
        $this->printException($e);
        $transaction->rollBack();
        return false;
    }
    return null;
}

            
dropColumn() public メソッド

DBカラムを削除するためのSQLステートメントを構築し、実行します。

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

列を削除するテーブル。名前はメソッドによって適切にクオートされます。

$column string

削除する列の名前。名前はメソッドによって適切にクオートされます。

                public function dropColumn($table, $column)
{
    $time = $this->beginCommand("drop column $column from table $table");
    $this->db->createCommand()->dropColumn($table, $column)->execute();
    $this->endCommand($time);
}

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

カラムからコメントを削除するためのSQLステートメントを構築し、実行します。

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

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

$column string

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

                public function dropCommentFromColumn($table, $column)
{
    $time = $this->beginCommand("drop comment from column $column");
    $this->db->createCommand()->dropCommentFromColumn($table, $column)->execute();
    $this->endCommand($time);
}

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

テーブルからコメントを削除するためのSQLステートメントを構築します。

public void dropCommentFromTable ( $table )
$table string

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

                public function dropCommentFromTable($table)
{
    $time = $this->beginCommand("drop comment from table $table");
    $this->db->createCommand()->dropCommentFromTable($table)->execute();
    $this->endCommand($time);
}

            
dropForeignKey() public メソッド

外部キー制約を削除するためのSQLステートメントを構築します。

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

削除する外部キー制約の名前。名前はメソッドによって適切にクオートされます。

$table string

外部キーを削除するテーブル。名前はメソッドによって適切にクオートされます。

                public function dropForeignKey($name, $table)
{
    $time = $this->beginCommand("drop foreign key $name from table $table");
    $this->db->createCommand()->dropForeignKey($name, $table)->execute();
    $this->endCommand($time);
}

            
dropIndex() public メソッド

インデックスを削除するためのSQLステートメントを構築し、実行します。

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

削除するインデックスの名前。名前はメソッドによって適切にクオートされます。

$table string

インデックスを削除するテーブル。名前はメソッドによって適切にクオートされます。

                public function dropIndex($name, $table)
{
    $time = $this->beginCommand("drop index $name on $table");
    $this->db->createCommand()->dropIndex($name, $table)->execute();
    $this->endCommand($time);
}

            
dropPrimaryKey() public メソッド

プライマリキーを削除するためのSQLステートメントを構築し、実行します。

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

削除するプライマリキー制約の名前。

$table string

プライマリキー制約を削除するテーブル。

                public function dropPrimaryKey($name, $table)
{
    $time = $this->beginCommand("drop primary key $name");
    $this->db->createCommand()->dropPrimaryKey($name, $table)->execute();
    $this->endCommand($time);
}

            
dropTable() public メソッド

DBテーブルを削除するためのSQLステートメントを構築し、実行します。

public void dropTable ( $table )
$table string

削除するテーブル。名前はメソッドによって適切にクオートされます。

                public function dropTable($table)
{
    $time = $this->beginCommand("drop table $table");
    $this->db->createCommand()->dropTable($table)->execute();
    $this->endCommand($time);
}

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

コマンドが実行された後、終了し、経過時間をコンソールに出力します。

protected void endCommand ( $time )
$time float

コマンドが実行される前の時刻。

                protected function endCommand($time)
{
    if (!$this->compact) {
        echo ' done (time: ' . sprintf('%.3f', microtime(true) - $time) . "s)\n";
    }
}

            
ensureBehaviors() public メソッド

定義元: yii\base\Component::ensureBehaviors()

behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
execute() public メソッド

SQLステートメントを実行します。

このメソッドは、$db を使って指定された SQL ステートメントを実行します。

public void execute ( $sql, $params = [] )
$sql string

実行される SQL ステートメント

$params array

SQL 実行のための入力パラメーター (名前 => 値)。詳細は yii\db\Command::execute() を参照してください。

                public function execute($sql, $params = [])
{
    $sqlOutput = $sql;
    if ($this->maxSqlOutputLength !== null) {
        $sqlOutput = StringHelper::truncate($sql, $this->maxSqlOutputLength, '[... hidden]');
    }
    $time = $this->beginCommand("execute SQL: $sqlOutput");
    $this->db->createCommand($sql)->bindValues($params)->execute();
    $this->endCommand($time);
}

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

定義元: yii\db\SchemaBuilderTrait::float()

float型のカラムを作成します。

public yii\db\ColumnSchemaBuilder float ( $precision null )
$precision integer|null

カラム値の精度。カラム型に渡される最初のパラメーター。例: FLOAT(precision)。このパラメーターは、DBMS でサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function float($precision = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_FLOAT, $precision);
}

            
getBehavior() public メソッド

定義元: yii\base\Component::getBehavior()

指定された名前のビヘイビアオブジェクトを返します。

public yii\base\Behavior|null getBehavior ( $name )
$name string

ビヘイビア名

return yii\base\Behavior|null

ビヘイビアオブジェクト。または、ビヘイビアが存在しない場合は null

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public メソッド

定義元: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされているすべてのビヘイビアを返します。

public yii\base\Behavior[] getBehaviors ( )
return yii\base\Behavior[]

このコンポーネントにアタッチされたビヘイビアのリスト

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

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

protected void getDb ( )

                protected function getDb()
{
    return $this->db;
}

            
hasEventHandlers() public メソッド

定義元: yii\base\Component::hasEventHandlers()

指定された名前のイベントにハンドラーがアタッチされているかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

return boolean

イベントにアタッチされたハンドラーがあるかどうか。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() public メソッド

定義元: yii\base\Component::hasMethod()

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

メソッドは、次の場合に定義されます。

  • クラスが指定された名前のメソッドを持っている
  • アタッチされたビヘイビアが、指定された名前のメソッドを持っている($checkBehaviorsがtrueの場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

return boolean

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

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() public メソッド

定義元: yii\base\Component::hasProperty()

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティは、次の場合に定義されます。

  • クラスが、指定された名前に関連付けられたゲッターまたはセッターメソッドを持っている(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前を持つメンバー変数がある場合 ($checkVars が true の場合)。
  • アタッチされたビヘイビアが、指定された名前のプロパティを持っている($checkBehaviorsがtrueの場合)。

参照

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

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

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

            
init() public メソッド

マイグレーションを初期化します。

このメソッドは、$dbnull の場合、'db' アプリケーションコンポーネントを設定します。

public void init ( )

                public function init()
{
    parent::init();
    $this->db = Instance::ensure($this->db, Connection::className());
    $this->db->getSchema()->refresh();
    $this->db->enableSlaves = false;
}

            
insert() public メソッド

INSERT SQLステートメントを作成し、実行します。

このメソッドは、カラム名を適切にエスケープし、挿入される値をバインドします。

public void insert ( $table, $columns )
$table string

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

$columns array

テーブルに挿入されるカラムデータ(名前 => 値)。

                public function insert($table, $columns)
{
    $time = $this->beginCommand("insert into $table");
    $this->db->createCommand()->insert($table, $columns)->execute();
    $this->endCommand($time);
}

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

定義元: yii\db\SchemaBuilderTrait::integer()

integer型のカラムを作成します。

public yii\db\ColumnSchemaBuilder integer ( $length null )
$length integer|null

カラムのサイズまたは精度定義。このパラメータは、DBMSでサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function integer($length = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_INTEGER, $length);
}

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

定義元: yii\db\SchemaBuilderTrait::json()

JSON型のカラムを作成します。

public yii\db\ColumnSchemaBuilder json ( )
return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

throws yii\base\Exception

                public function json()
{
    /*
     * TODO Remove in Yii 2.1
     *
     * Disabled due to bug in MySQL extension
     * @link https://bugs.php.net/bug.php?id=70384
     */
    if (version_compare(PHP_VERSION, '5.6', '<') && $this->getDb()->getDriverName() === 'mysql') {
        throw new \yii\base\Exception('JSON column type is not supported in PHP < 5.6');
    }
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_JSON);
}

            
money() パブリックメソッド (バージョン 2.0.6 から利用可能)

定義元: yii\db\SchemaBuilderTrait::money()

money型のカラムを作成します。

public yii\db\ColumnSchemaBuilder money ( $precision null, $scale null )
$precision integer|null

カラム値の精度。通常、総桁数です。カラム型に渡される最初のパラメーター、例えば DECIMAL(precision, scale)。このパラメーターは、DBMS でサポートされていない場合は無視されます。

$scale integer|null

カラム値のスケール。通常、小数点以下の桁数です。カラム型に渡される 2 番目のパラメーター、例えば DECIMAL(precision, scale)。このパラメーターは、DBMS でサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function money($precision = null, $scale = null)
{
    $length = [];
    if ($precision !== null) {
        $length[] = $precision;
    }
    if ($scale !== null) {
        $length[] = $scale;
    }
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_MONEY, $length);
}

            
off() パブリックメソッド

定義元: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラーをデタッチします。

このメソッドは on() の反対です。

注意: イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラのみが削除され、このワイルドカードに一致するプレーン名で登録されたハンドラは残ります。

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

public boolean off ( $name, $handler null )
$name string

イベント名

$handler callable|null

削除するイベントハンドラ。null の場合、指定されたイベントにアタッチされたすべてのハンドラが削除されます。

return boolean

ハンドラが見つかり、デタッチされた場合

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() パブリックメソッド

定義元: yii\base\Component::on()

イベントにイベントハンドラーをアタッチします。

イベントハンドラは、有効な PHP コールバックである必要があります。以下にいくつかの例を示します

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

イベントハンドラは、次のシグネチャで定義する必要があります。

function ($event)

ここで、$event はイベントに関連付けられたパラメータを含む yii\base\Event オブジェクトです。

2.0.14 以降、イベント名をワイルドカードパターンとして指定できます。

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

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

public void on ( $name, $handler, $data null, $append true )
$name string

イベント名

$handler callable

イベントハンドラ

$data mixed

イベントがトリガーされたときにイベントハンドラに渡されるデータ。イベントハンドラが呼び出されたとき、このデータは yii\base\Event::$data を介してアクセスできます。

$append boolean

既存のハンドラリストの末尾に新しいイベントハンドラを追加するかどうか。false の場合、新しいハンドラは既存のハンドラリストの先頭に挿入されます。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
primaryKey() パブリックメソッド (バージョン 2.0.6 から利用可能)

定義元: yii\db\SchemaBuilderTrait::primaryKey()

プライマリキーのカラムを作成します。

public yii\db\ColumnSchemaBuilder primaryKey ( $length null )
$length integer|null

カラムのサイズまたは精度定義。このパラメータは、DBMSでサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function primaryKey($length = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_PK, $length);
}

            
renameColumn() パブリックメソッド

カラム名を変更するためのSQLステートメントを構築し、実行します。

public void renameColumn ( $table, $name, $newName )
$table string

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

$name string

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

$newName string

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

                public function renameColumn($table, $name, $newName)
{
    $time = $this->beginCommand("rename column $name in table $table to $newName");
    $this->db->createCommand()->renameColumn($table, $name, $newName)->execute();
    $this->endCommand($time);
}

            
renameTable() パブリックメソッド

DBテーブルの名前を変更するためのSQLステートメントを構築し、実行します。

public void renameTable ( $table, $newName )
$table string

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

$newName string

新しいテーブル名。名前はメソッドによって適切にクォートされます。

                public function renameTable($table, $newName)
{
    $time = $this->beginCommand("rename table $table to $newName");
    $this->db->createCommand()->renameTable($table, $newName)->execute();
    $this->endCommand($time);
}

            
safeDown() パブリックメソッド

このメソッドには、このマイグレーションを削除するときに実行されるロジックが含まれています。

このメソッドは、ここで実装される DB ロジックが DB トランザクション内に囲まれるという点で、down() と異なります。DB ロジックをトランザクション内に含める必要がある場合は、子クラスが down() の代わりにこのメソッドを実装できます。

注意: すべての DBMS がトランザクションをサポートしているわけではありません。また、一部の DB クエリはトランザクションに入れることができません。いくつかの例については、暗黙的コミット を参照してください。

public false|void|mixed safeDown ( )
return false|void|mixed

マイグレーションが失敗し、それ以上進めるべきでないことを示すには、false値を返します。その他の戻り値はすべて、マイグレーションが成功したことを意味します。

                public function safeDown()
{
}

            
safeUp() パブリックメソッド

このメソッドには、このマイグレーションを適用する際に実行されるロジックが含まれています。

このメソッドは、ここで実装される DB ロジックが DB トランザクション内に囲まれるという点で、up() と異なります。DB ロジックをトランザクション内に含める必要がある場合は、子クラスが up() の代わりにこのメソッドを実装できます。

注意: すべての DBMS がトランザクションをサポートしているわけではありません。また、一部の DB クエリはトランザクションに入れることができません。いくつかの例については、暗黙的コミット を参照してください。

public false|void|mixed safeUp ( )
return false|void|mixed

マイグレーションが失敗し、それ以上進めるべきでないことを示すには、false値を返します。その他の戻り値はすべて、マイグレーションが成功したことを意味します。

                public function safeUp()
{
}

            
smallInteger() パブリックメソッド (バージョン 2.0.6 から利用可能)

定義元: yii\db\SchemaBuilderTrait::smallInteger()

smallint型のカラムを作成します。

public yii\db\ColumnSchemaBuilder smallInteger ( $length null )
$length integer|null

カラムのサイズまたは精度定義。このパラメータは、DBMSでサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function smallInteger($length = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_SMALLINT, $length);
}

            
string() パブリックメソッド (バージョン 2.0.6 から利用可能)

定義元: yii\db\SchemaBuilderTrait::string()

string型のカラムを作成します。

public yii\db\ColumnSchemaBuilder string ( $length null )
$length integer|null

カラムのサイズ定義、つまり最大文字列長。このパラメーターは、DBMS でサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function string($length = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_STRING, $length);
}

            
text() パブリックメソッド (バージョン 2.0.6 から利用可能)

定義元: yii\db\SchemaBuilderTrait::text()

text型のカラムを作成します。

public yii\db\ColumnSchemaBuilder text ( )
return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function text()
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_TEXT);
}

            
time() パブリックメソッド (バージョン 2.0.6 から利用可能)

定義元: yii\db\SchemaBuilderTrait::time()

time型のカラムを作成します。

public yii\db\ColumnSchemaBuilder time ( $precision null )
$precision integer|null

カラム値の精度。カラムタイプに渡される最初のパラメータです。例:TIME(精度)。DBMSでサポートされていない場合、このパラメータは無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function time($precision = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_TIME, $precision);
}

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

定義元: yii\db\SchemaBuilderTrait::timestamp()

timestamp型のカラムを作成します。

public yii\db\ColumnSchemaBuilder timestamp ( $precision null )
$precision integer|null

カラム値の精度。カラムタイプに渡される最初のパラメータです。例:TIMESTAMP(精度)。DBMSでサポートされていない場合、このパラメータは無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function timestamp($precision = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_TIMESTAMP, $precision);
}

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

定義元: yii\db\SchemaBuilderTrait::tinyInteger()

tinyint型のカラムを作成します。tinyintがDBMSでサポートされていない場合は、smallintが使用されます。

public yii\db\ColumnSchemaBuilder tinyInteger ( $length null )
$length integer|null

カラムのサイズまたは精度定義。このパラメータは、DBMSでサポートされていない場合は無視されます。

return yii\db\ColumnSchemaBuilder

さらにカスタマイズできるカラムインスタンス。

                public function tinyInteger($length = null)
{
    return $this->getDb()->getSchema()->createColumnSchemaBuilder(Schema::TYPE_TINYINT, $length);
}

            
trigger() public メソッド

定義元: yii\base\Component::trigger()

イベントをトリガーします。

このメソッドはイベントの発生を表します。クラスレベルのハンドラを含む、イベントにアタッチされたすべてのハンドラを呼び出します。

public void trigger ( $name, yii\base\Event $event null )
$name string

イベント名

$event yii\base\Event|null

イベントインスタンス。設定されていない場合、デフォルトのyii\base\Eventオブジェクトが作成されます。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            
truncateTable() public メソッド

DBテーブルを切り捨てるためのSQLステートメントを構築し、実行します。

public void truncateTable ( $table )
$table string

切り捨てるテーブル。名前はメソッドによって適切にクォートされます。

                public function truncateTable($table)
{
    $time = $this->beginCommand("truncate table $table");
    $this->db->createCommand()->truncateTable($table)->execute();
    $this->endCommand($time);
}

            
up() public メソッド

このメソッドには、このマイグレーションを適用する際に実行されるロジックが含まれています。

子クラスは、実際のマイグレーションロジックを提供するためにこのメソッドをオーバーライドすることができます。

public false|void|mixed up ( )
return false|void|mixed

マイグレーションが失敗し、それ以上進めるべきでないことを示すには、false値を返します。その他の戻り値はすべて、マイグレーションが成功したことを意味します。

                public function up()
{
    $transaction = $this->db->beginTransaction();
    try {
        if ($this->safeUp() === false) {
            $transaction->rollBack();
            return false;
        }
        $transaction->commit();
    } catch (\Exception $e) {
        $this->printException($e);
        $transaction->rollBack();
        return false;
    } catch (\Throwable $e) {
        $this->printException($e);
        $transaction->rollBack();
        return false;
    }
    return null;
}

            
update() public メソッド

UPDATE SQLステートメントを作成し、実行します。

このメソッドは、カラム名を適切にエスケープし、更新される値をバインドします。

public void update ( $table, $columns, $condition '', $params = [] )
$table string

更新するテーブル。

$columns array

更新するカラムデータ (name => value)。

$condition 配列|文字列

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

$params array

クエリにバインドされるパラメータ。

                public function update($table, $columns, $condition = '', $params = [])
{
    $time = $this->beginCommand("update $table");
    $this->db->createCommand()->update($table, $columns, $condition, $params)->execute();
    $this->endCommand($time);
}

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

まだ存在しない場合(一意制約に一致する場合)は、データベーステーブルに行を挿入し、存在する場合はそれらを更新するコマンドを作成して実行します。

このメソッドは、カラム名を適切にエスケープし、挿入される値をバインドします。

public void upsert ( $table, $insertColumns, $updateColumns true, $params = [] )
$table string

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

$insertColumns array|yii\db\Query

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

$updateColumns array|boolean

すでに存在する場合に更新するカラムデータ (name => value)。trueが渡された場合、カラムデータは挿入カラムデータと一致するように更新されます。falseが渡された場合、カラムデータがすでに存在する場合は更新は実行されません。

$params array

コマンドにバインドするパラメータ。

                public function upsert($table, $insertColumns, $updateColumns = true, $params = [])
{
    $time = $this->beginCommand("upsert into $table");
    $this->db->createCommand()->upsert($table, $insertColumns, $updateColumns, $params)->execute();
    $this->endCommand($time);
}