0 フォロワー

クラス yii\db\Connection

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

Connection は、PDO を介したデータベースへの接続を表します。

Connection は、yii\db\Commandyii\db\DataReader、および yii\db\Transaction と連携して、共通の API セットでさまざまな DBMS へのデータ アクセスを提供します。これらは、PDO PHP 拡張機能の薄いラッパーです。

Connection は、データベースのレプリケーションと読み書きの分割をサポートします。特に、Connection コンポーネントは複数の $masters$slaves で構成できます。適切なサーバーを選択して、負荷分散とフェイルオーバーを行います。また、読み取り操作をスレーブに、書き込み操作をマスターに自動的に転送します。

DB 接続を確立するには、$dsn$username、および $password を設定し、open() を呼び出してデータベース サーバーに接続します。接続の現在の状態は、$isActive を使用して確認できます。

次の例は、Connection インスタンスを作成し、DB 接続を確立する方法を示しています

$connection = new \yii\db\Connection([
    'dsn' => $dsn,
    'username' => $username,
    'password' => $password,
]);
$connection->open();

DB 接続が確立されると、次のような SQL ステートメントを実行できます

$command = $connection->createCommand('SELECT * FROM post');
$posts = $command->queryAll();
$command = $connection->createCommand('UPDATE post SET status=1');
$command->execute();

準備された SQL の実行と、準備された SQL へのパラメーターのバインドも行うことができます。パラメーターがユーザー入力から来る場合は、SQL インジェクション攻撃を防ぐためにこのアプローチを使用する必要があります。以下は例です

$command = $connection->createCommand('SELECT * FROM post WHERE id=:id');
$command->bindValue(':id', $_GET['id']);
$post = $command->query();

さまざまな DB クエリの実行方法の詳細については、yii\db\Command を参照してください。

基盤となる DBMS がトランザクションをサポートしている場合は、次のようなトランザクション SQL クエリを実行できます

$transaction = $connection->beginTransaction();
try {
    $connection->createCommand($sql1)->execute();
    $connection->createCommand($sql2)->execute();
    // ... executing other SQL statements ...
    $transaction->commit();
} catch (Exception $e) {
    $transaction->rollBack();
}

上記のように、次のようなショートカットを使用することもできます。

$connection->transaction(function () {
    $order = new Order($customer);
    $order->save();
    $order->addItems($items);
});

必要に応じて、トランザクション分離レベルを 2 番目のパラメーターとして渡すことができます

$connection->transaction(function (Connection $db) {
    //return $db->...
}, Transaction::READ_UNCOMMITTED);

Connection は、多くの場合、アプリケーション コンポーネントとして使用され、次のようにアプリケーション構成で構成されます

'components' => [
    'db' => [
        'class' => '\yii\db\Connection',
        'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ],
],

公開プロパティ

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

プロパティ タイプ 説明 定義元
$attributes 配列 open() を呼び出して DB 接続を確立する際に設定する必要がある PDO 属性 (name => value)。 yii\db\Connection
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$charset string|null データベース接続に使用される文字セット。 yii\db\Connection
$commandClass 文字列 新しいデータベース yii\db\Command オブジェクトを作成するために使用されるクラス。 yii\db\Connection
$commandMap 配列 PDO ドライバ名と yii\db\Command クラスの間のマッピング。 yii\db\Connection
$driverName string|null DB ドライバの名前。 yii\db\Connection
$dsn 文字列 データ ソース名 (DSN) には、データベースへの接続に必要な情報が含まれています。 yii\db\Connection
$emulatePrepare boolean|null 準備エミュレーションをオンにするかどうか。 yii\db\Connection
$enableLogging boolean データベース クエリのログ記録を有効にするかどうか。 yii\db\Connection
$enableProfiling boolean データベース接続のオープンとデータベース クエリのプロファイリングを有効にするかどうか。 yii\db\Connection
$enableQueryCache boolean クエリ キャッシュを有効にするかどうか。 yii\db\Connection
$enableSavepoint boolean セーブポイントを有効にするかどうか。 yii\db\Connection
$enableSchemaCache boolean スキーマ キャッシュを有効にするかどうか。 yii\db\Connection
$enableSlaves boolean $slaves を使用してデータを読み取ることで、読み書きの分割を有効にするかどうか。 yii\db\Connection
$isActive boolean DB 接続が確立されているかどうか。 yii\db\Connection
$isSybase boolean pdo_dblib を介して接続されたデータベースが SyBase かどうか。 yii\db\Connection
$lastInsertID 文字列 挿入された最後の行の行 ID、またはシーケンス オブジェクトから取得された最後の値。 yii\db\Connection
$master yii\db\Connection|null 現在アクティブなマスター接続。 yii\db\Connection
$masterConfig 配列 $masters にリストされているすべてのマスター構成とマージする必要がある構成。 yii\db\Connection
$masterPdo PDO 現在アクティブなマスター接続の PDO インスタンス。 yii\db\Connection
$masters 配列 マスター接続構成のリスト。 yii\db\Connection
$password string|null DB 接続を確立するためのパスワード。 yii\db\Connection
$pdo PDO|null このDB接続に関連付けられたPHP PDOインスタンス。 yii\db\Connection
$pdoClass string|null カスタムPDOラッパークラス。 yii\db\Connection
$queryBuilder yii\db\QueryBuilder 現在のDB接続用のクエリビルダー。 yii\db\Connection
$queryCache yii\caching\CacheInterface|string クエリキャッシュに使用されるキャッシュオブジェクトまたはキャッシュアプリケーションコンポーネントのID。 yii\db\Connection
$queryCacheDuration 整数型 クエリ結果がキャッシュ内で有効なままにできるデフォルトの秒数。 yii\db\Connection
$schema yii\db\Schema この接続によって開かれたデータベースのスキーマ情報。 yii\db\Connection
$schemaCache yii\caching\CacheInterface|string テーブルメタデータをキャッシュするために使用されるキャッシュオブジェクトまたはキャッシュアプリケーションコンポーネントのID。 yii\db\Connection
$schemaCacheDuration 整数型 テーブルメタデータがキャッシュ内で有効なままにできる秒数。 yii\db\Connection
$schemaCacheExclude 配列 メタデータをキャッシュすべきでないテーブルのリスト。 yii\db\Connection
$schemaMap 配列 PDOドライバ名とyii\db\Schemaクラス間のマッピング。 yii\db\Connection
$serverRetryInterval 整数型 $masters$slavesにリストされているダウンしたサーバーのリトライ間隔(秒)。 yii\db\Connection
$serverStatusCache yii\caching\CacheInterface|string|false $masters$slavesで指定されたDBサーバーのヘルス状態を保存するために使用されるキャッシュオブジェクトまたはキャッシュアプリケーションコンポーネントのID。 yii\db\Connection
$serverVersion 文字列 サーバーバージョンを文字列として。 yii\db\Connection
$shuffleMasters boolean $mastersから1つを取得する前にシャッフルするかどうか。 yii\db\Connection
$slave yii\db\Connection|null 現在アクティブなスレーブ接続。 yii\db\Connection
$slaveConfig 配列 $slavesにリストされているすべてのスレーブ構成とマージされる必要がある構成。 yii\db\Connection
$slavePdo PDO|null 現在アクティブなスレーブ接続のPDOインスタンス。 yii\db\Connection
$slaves 配列 スレーブ接続構成のリスト。 yii\db\Connection
$tablePrefix 文字列 テーブル名の共通プレフィックスまたはサフィックス。 yii\db\Connection
$transaction yii\db\Transaction|null 現在アクティブなトランザクション。 yii\db\Connection
$username string|null DB接続を確立するためのユーザー名。 yii\db\Connection

パブリックメソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() クローン後に接続をリセットします。 yii\db\Connection
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているか(つまり、定義されていてnullではないか)を確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__sleep() シリアル化する前に接続を閉じます。 yii\db\Connection
__unset() コンポーネントプロパティをnullに設定します。 yii\base\Component
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
beginTransaction() トランザクションを開始します。 yii\db\Connection
behaviors() このコンポーネントが動作するはずのビヘイビアのリストを返します。 yii\base\Component
cache() コールバックで実行されたクエリにクエリキャッシュを使用します。 yii\db\Connection
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
close() 現在アクティブなDB接続を閉じます。 yii\db\Connection
createCommand() 実行のためのコマンドを作成します。 yii\db\Connection
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
getBehavior() 指定された名前のビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされたすべてのビヘイビアを返します。 yii\base\Component
getDriverName() DBドライバの名前を返します。エンドユーザーによって明示的に設定されていない場合は、現在の$dsnに基づきます。 yii\db\Connection
getIsActive() DB接続が確立されているかどうかを示す値を返します。 yii\db\Connection
getLastInsertID() 最後に挿入された行またはシーケンスの値のIDを返します。 yii\db\Connection
getMaster() 現在アクティブなマスター接続を返します。 yii\db\Connection
getMasterPdo() 現在アクティブなマスター接続のPDOインスタンスを返します。 yii\db\Connection
getQueryBuilder() 現在のDB接続のクエリビルダーを返します。 yii\db\Connection
getSchema() この接続によって開かれたデータベースのスキーマ情報を返します。 yii\db\Connection
getServerVersion() \version_compare()で比較可能な文字列としてサーバーバージョンを返します。 yii\db\Connection
getSlave() 現在アクティブなスレーブ接続を返します。 yii\db\Connection
getSlavePdo() 現在アクティブなスレーブ接続のPDOインスタンスを返します。 yii\db\Connection
getTableSchema() 指定されたテーブルのスキーマ情報を取得します。 yii\db\Connection
getTransaction() 現在アクティブなトランザクションを返します。 yii\db\Connection
hasEventHandlers() 指定された名前のイベントにハンドラがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントに対してプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\base\BaseObject
noCache() 一時的にクエリキャッシュを無効にします。 yii\db\Connection
off() このコンポーネントから既存のイベントハンドラをデタッチします。 yii\base\Component
on() イベントにイベントハンドラをアタッチします。 yii\base\Component
open() DB接続を確立します。 yii\db\Connection
quoteColumnName() クエリで使用するために列名を引用符で囲みます。 yii\db\Connection
quoteSql() 二重角括弧で囲まれたテーブル名と列名を引用符で囲むことによって、SQLステートメントを処理します。 yii\db\Connection
quoteTableName() クエリで使用するためにテーブル名を引用符で囲みます。 yii\db\Connection
quoteValue() クエリで使用するために文字列値を引用符で囲みます。 yii\db\Connection
setDriverName() 現在のドライバ名を変更します。 yii\db\Connection
setQueryBuilder() Connection設定配列を介してyii\db\QueryBuilderを設定するために使用できます。 yii\db\Connection
transaction() トランザクションで提供されたコールバックを実行します。 yii\db\Connection
trigger() イベントをトリガーします。 yii\base\Component
useMaster() マスター接続を使用して、提供されたコールバックを実行します。 yii\db\Connection

保護されたメソッド

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

メソッド 説明 定義元
createPdoInstance() PDOインスタンスを作成します。 yii\db\Connection
initConnection() DB接続を初期化します。 yii\db\Connection
openFromPool() プール内のサーバーへの接続を開きます。 yii\db\Connection
openFromPoolSequentially() プール内のサーバーへの接続を開きます。 yii\db\Connection

イベント

継承されたイベントを隠す

イベント タイプ 説明 定義元
EVENT_AFTER_OPEN yii\base\Event DB接続が確立された後にトリガーされるイベント yii\db\Connection
EVENT_BEGIN_TRANSACTION yii\base\Event トップレベルトランザクションが開始される直前にトリガーされるイベント yii\db\Connection
EVENT_COMMIT_TRANSACTION yii\base\Event トップレベルトランザクションがコミットされた直後にトリガーされるイベント yii\db\Connection
EVENT_ROLLBACK_TRANSACTION yii\base\Event トップレベルトランザクションがロールバックされた直後にトリガーされるイベント yii\db\Connection

プロパティの詳細

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

$attributes パブリックプロパティ

DB接続を確立するためにopen()を呼び出すときに設定する必要があるPDO属性(name => value)。利用可能な属性の詳細については、PHPマニュアルを参照してください。

public array $attributes null
$charset パブリックプロパティ

データベース接続に使用される文字セット。このプロパティは、MySQL、PostgreSQL、およびCUBRIDデータベースでのみ使用されます。デフォルトはnullで、データベースで構成されたデフォルトの文字セットを使用することを意味します。

Oracle Databaseの場合、文字セットは$dsnで指定する必要があります。たとえば、UTF-8の場合は、DSN文字列に;charset=UTF-8を追加します。

MySQLでGBKまたはBIG5文字セットを使用している場合も同様です。'mysql:dbname=mydatabase;host=127.0.0.1;charset=GBK;'のように、$dsnを介して文字セットを指定することを強くお勧めします。

public string|null $charset null
$commandClass パブリックプロパティ(バージョン2.0.7以降で利用可能)
2.0.14 から非推奨になりました。正確な設定には $commandMap を使用してください。

新しいデータベースの yii\db\Command オブジェクトを作成するために使用されるクラスです。yii\db\Command クラスを拡張したい場合は、このプロパティを構成して、拡張バージョンのクラスを使用できます。バージョン 2.0.14 以降では、このプロパティがデフォルト値に設定されている場合、$commandMap が使用されます。

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

public string $commandClass 'yii\db\Command'
$commandMap public プロパティ (バージョン 2.0.14 から利用可能)

PDO ドライバ名と yii\db\Command クラス間のマッピング。配列のキーは PDO ドライバ名で、値は対応するコマンドクラス名または構成です。構成を指定する方法の詳細については、Yii::createObject() を参照してください。

このプロパティは、主に createCommand() で新しいデータベース yii\db\Command オブジェクトを作成するために使用されます。独自の yii\db\Command クラスを使用したい場合や、Yii がサポートしていない DBMS をサポートする場合を除き、通常はこのプロパティを設定する必要はありません。

public array $commandMap = [
    
'pgsql' => 'yii\db\Command',
    
'mysqli' => 'yii\db\Command',
    
'mysql' => 'yii\db\Command',
    
'sqlite' => 'yii\db\sqlite\Command',
    
'sqlite2' => 'yii\db\sqlite\Command',
    
'sqlsrv' => 'yii\db\Command',
    
'oci' => 'yii\db\oci\Command',
    
'mssql' => 'yii\db\Command',
    
'dblib' => 'yii\db\Command',
    
'cubrid' => 'yii\db\Command',
]
$driverName public プロパティ

DB ドライバの名前。このプロパティの型は getter と setter で異なることに注意してください。詳細については、getDriverName() および setDriverName() を参照してください。

public string|null $driverName null
$dsn public プロパティ

データソース名 (DSN) には、データベースに接続するために必要な情報が含まれています。DSN 文字列の形式については、PHP マニュアルを参照してください。

SQLite の場合、データベースパスを指定するために、パスエイリアスを使用できます。例: sqlite:@app/data/db.sql

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

public string $dsn null
$emulatePrepare public プロパティ

準備エミュレーションを有効にするかどうか。デフォルトは false であり、PDO は利用可能な場合はネイティブの準備サポートを使用することを意味します。一部のデータベース (MySQL など) では、PDO がバギーなネイティブ準備サポートを回避するために準備サポートをエミュレートできるように、これを true に設定する必要がある場合があります。デフォルト値は null であり、これは PDO の ATTR_EMULATE_PREPARES 値が変更されないことを意味します。

$enableLogging public プロパティ (バージョン 2.0.12 から利用可能)

データベースクエリのログ記録を有効にするかどうか。デフォルトは true です。ログに記録される情報が不要な場合、本番環境ではパフォーマンスを向上させるためにこのオプションを無効にすることができます。

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

public boolean $enableLogging true
$enableProfiling public プロパティ (バージョン 2.0.12 から利用可能)

データベース接続のオープンとデータベースクエリのプロファイリングを有効にするかどうか。デフォルトは true です。ログに記録される情報が不要な場合、本番環境ではパフォーマンスを向上させるためにこのオプションを無効にすることができます。

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

public boolean $enableProfiling true
$enableQueryCache public プロパティ

クエリキャッシングを有効にするかどうか。クエリキャッシングを有効にするには、$queryCache で指定された有効なキャッシュコンポーネントが有効になっており、$enableQueryCache が true に設定されている必要があることに注意してください。また、cache() 内に記述されたクエリの結果のみがキャッシュされます。

以下も参照

public boolean $enableQueryCache true
$enableSavepoint public プロパティ

セーブポイントを有効にするかどうか。基になる DBMS がセーブポイントをサポートしていない場合、このプロパティを true に設定しても効果がないことに注意してください。

public boolean $enableSavepoint true
$enableSchemaCache public プロパティ

スキーマキャッシングを有効にするかどうか。真のスキーマキャッシングを有効にするには、$schemaCache で指定された有効なキャッシュコンポーネントが有効になっており、$enableSchemaCache が true に設定されている必要があることに注意してください。

以下も参照

public boolean $enableSchemaCache false
$enableSlaves public プロパティ

$slaves を使用してデータを読み込むことで、読み取り/書き込みの分割を有効にするかどうか。なお、$slaves が空の場合、このプロパティの値に関わらず、読み取り/書き込みの分割は有効になりません。

public boolean $enableSlaves true
$isActive public プロパティ

DB 接続が確立されているかどうか。

public boolean $isActive null
$isSybase public プロパティ (バージョン 2.0.38 から利用可能)

pdo_dblib を介して接続されたデータベースが SyBase かどうか。

public boolean $isSybase false
$lastInsertID public プロパティ

挿入された最後の行の行 ID、またはシーケンス オブジェクトから取得された最後の値。

public string $lastInsertID null
$master public プロパティ

現在アクティブなマスター接続。マスターが利用できない場合は null が返されます。

$masterConfig public プロパティ

$masters にリストされているすべてのマスター構成とマージされる構成。例えば、

[
    'username' => 'master',
    'password' => 'master',
    'attributes' => [
        // use a smaller connection timeout
        PDO::ATTR_TIMEOUT => 10,
    ],
]
public array $masterConfig = []
$masterPdo public プロパティ

現在アクティブなマスター接続の PDO インスタンス。

public PDO $masterPdo null
$masters public プロパティ

マスター接続構成のリスト。各構成は、マスターDB接続を作成するために使用されます。open() が呼び出されると、これらの構成のいずれかが選択され、このオブジェクトで使用されるDB接続を作成するために使用されます。このプロパティが空でない場合、このオブジェクトの接続設定 (例: "dsn"、"username") は無視されることに注意してください。

以下も参照

public array $masters = []
$password public プロパティ

DB接続を確立するためのパスワード。デフォルトは null で、パスワードを使用しないことを意味します。

public string|null $password null
$pdo public プロパティ

このDB接続に関連付けられたPHP PDOインスタンス。このプロパティは主に open() および close() メソッドによって管理されます。DB接続がアクティブな場合、このプロパティはPDOインスタンスを表します。それ以外の場合は、nullになります。

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

public PDO|null $pdo null
$pdoClass public プロパティ

カスタムPDOラッパークラス。設定されていない場合は、MSSQLが使用されている場合は、PDO または yii\db\mssql\PDO が使用されます。

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

public string|null $pdoClass null
$queryBuilder public プロパティ

現在の DB 接続のクエリビルダー。このプロパティの型はゲッターとセッターで異なることに注意してください。詳細は、getQueryBuilder()setQueryBuilder() を参照してください。

$queryCache public プロパティ

クエリキャッシュに使用されるキャッシュオブジェクトまたはキャッシュアプリケーションコンポーネントのID。

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

$queryCacheDuration public プロパティ

クエリ結果がキャッシュ内で有効なままにできるデフォルトの秒数。デフォルトは 3600 で、これは 3600 秒、つまり 1 時間を意味します。キャッシュされたデータが期限切れにならないことを示すには、0 を使用します。このプロパティの値は、cache() がキャッシュ期間なしで呼び出されたときに使用されます。

以下も参照

$schema public プロパティ

この接続によって開かれたデータベースのスキーマ情報。

public yii\db\Schema $schema null
$schemaCache public プロパティ

テーブルメタデータをキャッシュするために使用されるキャッシュオブジェクトまたはキャッシュアプリケーションコンポーネントのID。

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

$schemaCacheDuration public プロパティ

テーブルメタデータがキャッシュ内で有効なままにできる秒数。キャッシュされたデータが期限切れにならないことを示すには、0 を使用します。

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

$schemaCacheExclude public プロパティ

メタデータをキャッシュすべきでないテーブルのリスト。デフォルトは空の配列です。テーブル名には、スキーマプレフィックスが含まれる場合があります(ある場合)。テーブル名を引用符で囲まないでください。

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

$schemaMap public プロパティ

PDO ドライバ名と yii\db\Schema クラスのマッピング。配列のキーは PDO ドライバ名であり、値は対応するスキーマクラス名または構成です。構成の指定方法の詳細については、Yii::createObject() を参照してください。

このプロパティは、データベーススキーマ情報を取得する際に、主に getSchema() によって使用されます。通常、Yii がサポートしていない DBMS をサポートするために独自の yii\db\Schema クラスを使用する場合を除き、このプロパティを設定する必要はありません。

public array $schemaMap = [
    
'pgsql' => 'yii\db\pgsql\Schema',
    
'mysqli' => 'yii\db\mysql\Schema',
    
'mysql' => 'yii\db\mysql\Schema',
    
'sqlite' => 'yii\db\sqlite\Schema',
    
'sqlite2' => 'yii\db\sqlite\Schema',
    
'sqlsrv' => 'yii\db\mssql\Schema',
    
'oci' => 'yii\db\oci\Schema',
    
'mssql' => 'yii\db\mssql\Schema',
    
'dblib' => 'yii\db\mssql\Schema',
    
'cubrid' => 'yii\db\cubrid\Schema',
]
$serverRetryInterval public プロパティ

$masters$slaves にリストされている停止したサーバーの再試行間隔(秒単位)。これは、$serverStatusCache と共に使用されます。

$serverStatusCache public プロパティ

$masters および $slaves で指定された DB サーバーのヘルスステータスを保存するために使用されるキャッシュオブジェクトまたはキャッシュアプリケーションコンポーネントの ID。これは、読み取り/書き込み分割が有効になっているか、$masters が空でない場合にのみ使用されます。サーバーの状態キャッシュを無効にするには、ブール値の false を設定します。

以下も参照

$serverVersion public プロパティ

サーバーバージョンを文字列として。

public string $serverVersion null
$shuffleMasters public プロパティ (バージョン 2.0.11 から利用可能)

$mastersから1つを取得する前にシャッフルするかどうか。

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

public boolean $shuffleMasters true
$slave public プロパティ

現在アクティブなスレーブ接続。スレーブが利用できず、$fallbackToMasterがfalseの場合はnullが返されます。

$slaveConfig public プロパティ

$slavesにリストされているすべてのスレーブ構成とマージされる構成。例:

[
    'username' => 'slave',
    'password' => 'slave',
    'attributes' => [
        // use a smaller connection timeout
        PDO::ATTR_TIMEOUT => 10,
    ],
]
public array $slaveConfig = []
$slavePdo public プロパティ

現在アクティブなスレーブ接続のPDOインスタンス。スレーブ接続が利用できず、$fallbackToMasterがfalseの場合はnullが返されます。

public PDO|null $slavePdo null
$slaves public プロパティ

スレーブ接続構成のリスト。各構成は、スレーブDB接続を作成するために使用されます。$enableSlavesがtrueの場合、これらの構成の1つが選択され、読み取りクエリのみを実行するためのDB接続を作成するために使用されます。

以下も参照

public array $slaves = []
$tablePrefix public プロパティ

テーブル名の共通のプレフィックスまたはサフィックス。テーブル名が{{%TableName}}として指定されている場合、パーセント文字%はこのプロパティの値に置き換えられます。例えば、{{%post}}{{tbl_post}}になります。

public string $tablePrefix ''
$transaction public プロパティ

現在アクティブなトランザクション。アクティブなトランザクションがない場合はNull。

$username public プロパティ

DB接続を確立するためのユーザー名。デフォルトは、使用するユーザー名がないことを意味するnullです。

public string|null $username null

メソッド詳細

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

__call() public メソッド

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

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

このメソッドは、アタッチされた動作に指定されたメソッドがあるかどうかを確認し、利用可能な場合は実行します。

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

public mixed __call ( $name, $params )
$name 文字列

メソッド名

$params 配列

メソッドパラメータ

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 メソッド

クローン後に接続をリセットします。

public void __clone ( )

                public function __clone()
{
    parent::__clone();
    $this->_master = false;
    $this->_slave = false;
    $this->_schema = null;
    $this->_transaction = null;
    if (strncmp($this->dsn, 'sqlite::memory:', 15) !== 0) {
        // reset PDO connection, unless its sqlite in-memory, which can only have one connection
        $this->pdo = null;
    }
}

            
__construct() public メソッド

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

コンストラクタ。

デフォルトの実装では、次の2つのことを行います

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

このメソッドが子クラスでオーバーライドされる場合は、次のことをお勧めします

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

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

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

            
__get() public メソッド

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

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

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

  • ゲッターで定義されたプロパティ: ゲッターの結果を返します
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を返します

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

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

public mixed __get ( $name )
$name 文字列

プロパティ名

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 文字列

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

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 文字列

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

$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);
}

            
__sleep() public メソッド

シリアル化する前に接続を閉じます。

public array __sleep ( )

                public function __sleep()
{
    $fields = (array) $this;
    unset($fields['pdo']);
    unset($fields["\000" . __CLASS__ . "\000" . '_master']);
    unset($fields["\000" . __CLASS__ . "\000" . '_slave']);
    unset($fields["\000" . __CLASS__ . "\000" . '_transaction']);
    unset($fields["\000" . __CLASS__ . "\000" . '_schema']);
    return array_keys($fields);
}

            
__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 文字列

プロパティ名

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);
}

            
attachBehavior() public メソッド

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

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

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

こちらを参照 detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name 文字列

ビヘイビアの名前。

$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 配列

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

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

            
beginTransaction() public メソッド

トランザクションを開始します。

public yii\db\Transaction beginTransaction ( $isolationLevel null )
$isolationLevel string|null

このトランザクションに使用する分離レベル。詳細については、yii\db\Transaction::begin()を参照してください。

return yii\db\Transaction

開始されたトランザクション

                public function beginTransaction($isolationLevel = null)
{
    $this->open();
    if (($transaction = $this->getTransaction()) === null) {
        $transaction = $this->_transaction = new Transaction(['db' => $this]);
    }
    $transaction->begin($isolationLevel);
    return $transaction;
}

            
behaviors() public メソッド

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

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

子クラスは、このメソッドをオーバーライドして、動作させたいビヘイビアを指定できます。

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

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

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

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

public array behaviors ( )
return 配列

ビヘイビア構成。

                public function behaviors()
{
    return [];
}

            
cache() public メソッド

コールバックで実行されたクエリにクエリキャッシュを使用します。

クエリキャッシュが有効になっている場合($enableQueryCacheがtrueで、$queryCacheが有効なキャッシュを参照している場合)、callable内で実行されるクエリはキャッシュされ、利用可能な場合はキャッシュから結果がフェッチされます。例えば、

// The customer will be fetched from cache if available.
// If not, the query will be made against DB and cached for use next time.
$customer = $db->cache(function (Connection $db) {
    return $db->createCommand('SELECT * FROM customer WHERE id=1')->queryOne();
});

クエリキャッシュは、結果を返すクエリに対してのみ意味があることに注意してください。yii\db\Command::execute()で実行されるクエリの場合、クエリキャッシュは使用されません。

以下も参照

public mixed cache ( callable $callable, $duration null, $dependency null )
$callable callable

クエリキャッシュを利用するDBクエリを含むPHPのcallable。callableの署名はfunction (Connection $db)です。

$duration integer|null

クエリ結果がキャッシュ内で有効な秒数。これが設定されていない場合、代わりに$queryCacheDurationの値が使用されます。キャッシュされたデータが期限切れにならないようにするには0を使用します。

$dependency yii\caching\Dependency|null

キャッシュされたクエリ結果に関連付けられたキャッシュ依存。

return mixed

callableの戻り値

throws Throwable

クエリ中に例外が発生した場合

                public function cache(callable $callable, $duration = null, $dependency = null)
{
    $this->_queryCacheInfo[] = [$duration === null ? $this->queryCacheDuration : $duration, $dependency];
    try {
        $result = call_user_func($callable, $this);
        array_pop($this->_queryCacheInfo);
        return $result;
    } catch (\Exception $e) {
        array_pop($this->_queryCacheInfo);
        throw $e;
    } catch (\Throwable $e) {
        array_pop($this->_queryCacheInfo);
        throw $e;
    }
}

            
canGetProperty() public メソッド

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

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

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

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

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

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name 文字列

プロパティ名

$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 文字列

プロパティ名

$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;
}

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

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

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

public static string className ( )
return 文字列

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

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

            
close() public メソッド

現在アクティブなDB接続を閉じます。

接続が既に閉じられている場合は何も行いません。

public void close ( )

                public function close()
{
    if ($this->_master) {
        if ($this->pdo === $this->_master->pdo) {
            $this->pdo = null;
        }
        $this->_master->close();
        $this->_master = false;
    }
    if ($this->pdo !== null) {
        Yii::debug('Closing DB connection: ' . $this->dsn, __METHOD__);
        $this->pdo = null;
    }
    if ($this->_slave) {
        $this->_slave->close();
        $this->_slave = false;
    }
    $this->_schema = null;
    $this->_transaction = null;
    $this->_driverName = null;
    $this->_queryCacheInfo = [];
    $this->_quotedTableNames = null;
    $this->_quotedColumnNames = null;
}

            
createCommand() public メソッド

実行のためのコマンドを作成します。

public yii\db\Command createCommand ( $sql null, $params = [] )
$sql string|null

実行するSQLステートメント

$params 配列

SQLステートメントにバインドされるパラメーター

return yii\db\Command

DBコマンド

                public function createCommand($sql = null, $params = [])
{
    $driver = $this->getDriverName();
    $config = ['class' => 'yii\db\Command'];
    if ($this->commandClass !== $config['class']) {
        $config['class'] = $this->commandClass;
    } elseif (isset($this->commandMap[$driver])) {
        $config = !is_array($this->commandMap[$driver]) ? ['class' => $this->commandMap[$driver]] : $this->commandMap[$driver];
    }
    $config['db'] = $this;
    $config['sql'] = $sql;
    /** @var Command $command */
    $command = Yii::createObject($config);
    return $command->bindValues($params);
}

            
createPdoInstance() protected メソッド

PDOインスタンスを作成します。

このメソッドは、open()によってDB接続を確立するために呼び出されます。デフォルトの実装では、PHP PDOインスタンスが作成されます。特定のDBMSに合わせてデフォルトのPDOを調整する必要がある場合は、このメソッドをオーバーライドできます。

protected PDO createPdoInstance ( )
return PDO

pdoインスタンス

                protected function createPdoInstance()
{
    $pdoClass = $this->pdoClass;
    if ($pdoClass === null) {
        $driver = null;
        if ($this->_driverName !== null) {
            $driver = $this->_driverName;
        } elseif (($pos = strpos($this->dsn, ':')) !== false) {
            $driver = strtolower(substr($this->dsn, 0, $pos));
        }
        switch ($driver) {
            case 'mssql':
                $pdoClass = 'yii\db\mssql\PDO';
                break;
            case 'dblib':
                $pdoClass = 'yii\db\mssql\DBLibPDO';
                break;
            case 'sqlsrv':
                $pdoClass = 'yii\db\mssql\SqlsrvPDO';
                break;
            default:
                $pdoClass = 'PDO';
        }
    }
    $dsn = $this->dsn;
    if (strncmp('sqlite:@', $dsn, 8) === 0) {
        $dsn = 'sqlite:' . Yii::getAlias(substr($dsn, 7));
    }
    return new $pdoClass($dsn, $this->username, $this->password, $this->attributes);
}

            
detachBehavior() public メソッド

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

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

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

public yii\base\Behavior|null detachBehavior ( $name )
$name 文字列

ビヘイビアの名前。

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);
    }
}

            
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);
        }
    }
}

            
getBehavior() public メソッド

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

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

public yii\base\Behavior|null getBehavior ( $name )
$name 文字列

ビヘイビアの名前

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;
}

            
getDriverName() public メソッド

DBドライバの名前を返します。エンドユーザーによって明示的に設定されていない場合は、現在の$dsnに基づきます。

public string|null getDriverName ( )
return string|null

DBドライバの名前

                public function getDriverName()
{
    if ($this->_driverName === null) {
        if (($pos = strpos((string)$this->dsn, ':')) !== false) {
            $this->_driverName = strtolower(substr($this->dsn, 0, $pos));
        } else {
            $this->_driverName = strtolower($this->getSlavePdo(true)->getAttribute(PDO::ATTR_DRIVER_NAME));
        }
    }
    return $this->_driverName;
}

            
getIsActive() public メソッド

DB接続が確立されているかどうかを示す値を返します。

public boolean getIsActive ( )
return boolean

DB接続が確立されているかどうか

                public function getIsActive()
{
    return $this->pdo !== null;
}

            
getLastInsertID() public メソッド

最後に挿入された行またはシーケンスの値のIDを返します。

参照: https://www.php.net/manual/en/pdo.lastinsertid.php.

public string getLastInsertID ( $sequenceName '' )
$sequenceName 文字列

シーケンスオブジェクトの名前 (一部の DBMS で必要)

return 文字列

最後に挿入された行の ID、またはシーケンスオブジェクトから最後に取得された値

                public function getLastInsertID($sequenceName = '')
{
    return $this->getSchema()->getLastInsertID($sequenceName);
}

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

現在アクティブなマスター接続を返します。

このメソッドが最初に呼び出された場合、マスター接続を開こうとします。

public yii\db\Connection|null getMaster ( )
return yii\db\Connection|null

現在アクティブなマスター接続。マスターが利用できない場合は null が返されます。

                public function getMaster()
{
    if ($this->_master === false) {
        $this->_master = $this->shuffleMasters
            ? $this->openFromPool($this->masters, $this->masterConfig)
            : $this->openFromPoolSequentially($this->masters, $this->masterConfig);
    }
    return $this->_master;
}

            
getMasterPdo() public メソッド

現在アクティブなマスター接続のPDOインスタンスを返します。

このメソッドはマスター DB 接続を開き、$pdo を返します。

public PDO getMasterPdo ( )
return PDO

現在アクティブなマスター接続の PDO インスタンス。

                public function getMasterPdo()
{
    $this->open();
    return $this->pdo;
}

            
getQueryBuilder() public メソッド

現在のDB接続のクエリビルダーを返します。

public yii\db\QueryBuilder getQueryBuilder ( )
return yii\db\QueryBuilder

現在のDB接続用のクエリビルダー。

                public function getQueryBuilder()
{
    return $this->getSchema()->getQueryBuilder();
}

            
getSchema() public メソッド

この接続によって開かれたデータベースのスキーマ情報を返します。

public yii\db\Schema getSchema ( )
return yii\db\Schema

この接続によって開かれたデータベースのスキーマ情報。

throws yii\base\NotSupportedException

現在のドライバタイプがサポートされていない場合

                public function getSchema()
{
    if ($this->_schema !== null) {
        return $this->_schema;
    }
    $driver = $this->getDriverName();
    if (isset($this->schemaMap[$driver])) {
        $config = !is_array($this->schemaMap[$driver]) ? ['class' => $this->schemaMap[$driver]] : $this->schemaMap[$driver];
        $config['db'] = $this;
        $this->_schema = Yii::createObject($config);
        $this->restoreQueryBuilderConfiguration();
        return $this->_schema;
    }
    throw new NotSupportedException("Connection does not support reading schema information for '$driver' DBMS.");
}

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

\version_compare()で比較可能な文字列としてサーバーバージョンを返します。

public string getServerVersion ( )
return 文字列

サーバーバージョンを文字列として。

                public function getServerVersion()
{
    return $this->getSchema()->getServerVersion();
}

            
getSlave() public メソッド

現在アクティブなスレーブ接続を返します。

このメソッドが最初に呼び出された場合、$enableSlaves が true の場合にスレーブ接続を開こうとします。

public yii\db\Connection|null getSlave ( $fallbackToMaster true )
$fallbackToMaster boolean

利用可能なスレーブ接続がない場合に、マスター接続を返すかどうか。

return yii\db\Connection|null

現在アクティブなスレーブ接続。スレーブが利用できず、$fallbackToMasterがfalseの場合はnullが返されます。

                public function getSlave($fallbackToMaster = true)
{
    if (!$this->enableSlaves) {
        return $fallbackToMaster ? $this : null;
    }
    if ($this->_slave === false) {
        $this->_slave = $this->openFromPool($this->slaves, $this->slaveConfig);
    }
    return $this->_slave === null && $fallbackToMaster ? $this : $this->_slave;
}

            
getSlavePdo() public メソッド

現在アクティブなスレーブ接続のPDOインスタンスを返します。

$enableSlaves が true の場合、読み取りクエリにはスレーブのいずれかが使用され、その PDO インスタンスがこのメソッドによって返されます。

public PDO|null getSlavePdo ( $fallbackToMaster true )
$fallbackToMaster boolean

利用可能なスレーブ接続がない場合に、マスター PDO を返すかどうか。

return PDO|null

現在アクティブなスレーブ接続のPDOインスタンス。スレーブ接続が利用できず、$fallbackToMasterがfalseの場合はnullが返されます。

                public function getSlavePdo($fallbackToMaster = true)
{
    $db = $this->getSlave(false);
    if ($db === null) {
        return $fallbackToMaster ? $this->getMasterPdo() : null;
    }
    return $db->pdo;
}

            
getTableSchema() public メソッド

指定されたテーブルのスキーマ情報を取得します。

public yii\db\TableSchema|null getTableSchema ( $name, $refresh false )
$name 文字列

テーブル名。

$refresh boolean

キャッシュに見つかった場合でも、テーブルスキーマをリロードするかどうか。

return yii\db\TableSchema|null

テーブルスキーマ情報。指定された名前のテーブルが存在しない場合はnull。

                public function getTableSchema($name, $refresh = false)
{
    return $this->getSchema()->getTableSchema($name, $refresh);
}

            
getTransaction() public メソッド

現在アクティブなトランザクションを返します。

public yii\db\Transaction|null getTransaction ( )
return yii\db\Transaction|null

現在アクティブなトランザクション。アクティブなトランザクションがない場合はNull。

                public function getTransaction()
{
    return $this->_transaction && $this->_transaction->getIsActive() ? $this->_transaction : null;
}

            
hasEventHandlers() public メソッド

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

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

public boolean hasEventHandlers ( $name )
$name 文字列

イベント名

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 文字列

プロパティ名

$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()

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

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

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

以下も参照

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name 文字列

プロパティ名

$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 メソッド

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

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

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

public void init ( )

                public function init()
{
}

            
initConnection() protected メソッド

DB接続を初期化します。

このメソッドは、DB接続が確立された直後に呼び出されます。デフォルトの実装では、$emulatePrepareがtrueの場合、PDO::ATTR_EMULATE_PREPARESをオンにし、データベースの$charsetが空でない場合は設定します。その後、EVENT_AFTER_OPENイベントをトリガーします。

protected void initConnection ( )

                protected function initConnection()
{
    $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    if ($this->emulatePrepare !== null && constant('PDO::ATTR_EMULATE_PREPARES')) {
        if ($this->driverName !== 'sqlsrv') {
            $this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, $this->emulatePrepare);
        }
    }
    if (PHP_VERSION_ID >= 80100 && $this->getDriverName() === 'sqlite') {
        $this->pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
    }
    if (!$this->isSybase && in_array($this->getDriverName(), ['mssql', 'dblib'], true)) {
        $this->pdo->exec('SET ANSI_NULL_DFLT_ON ON');
    }
    if ($this->charset !== null && in_array($this->getDriverName(), ['pgsql', 'mysql', 'mysqli', 'cubrid'], true)) {
        $this->pdo->exec('SET NAMES ' . $this->pdo->quote($this->charset));
    }
    $this->trigger(self::EVENT_AFTER_OPEN);
}

            
noCache() public メソッド

一時的にクエリキャッシュを無効にします。

callable内で実行されたクエリは、クエリキャッシュを一切使用しません。たとえば、

$db->cache(function (Connection $db) {

    // ... queries that use query cache ...

    return $db->noCache(function (Connection $db) {
        // this query will not use query cache
        return $db->createCommand('SELECT * FROM customer WHERE id=1')->queryOne();
    });
});

以下も参照

public mixed noCache ( callable $callable )
$callable callable

クエリキャッシュを使用すべきではないDBクエリを含むPHP callable。callableのシグネチャはfunction (Connection $db)です。

return mixed

callableの戻り値

throws Throwable

クエリ中に例外が発生した場合

                public function noCache(callable $callable)
{
    $this->_queryCacheInfo[] = false;
    try {
        $result = call_user_func($callable, $this);
        array_pop($this->_queryCacheInfo);
        return $result;
    } catch (\Exception $e) {
        array_pop($this->_queryCacheInfo);
        throw $e;
    } catch (\Throwable $e) {
        array_pop($this->_queryCacheInfo);
        throw $e;
    }
}

            
off() public メソッド

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

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

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

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

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

public boolean off ( $name, $handler null )
$name 文字列

イベント名

$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() public メソッド

定義元: 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 文字列

イベント名

$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]);
    }
}

            
open() public メソッド

DB接続を確立します。

DB接続が既に確立されている場合は、何も行いません。

public void open ( )
throws yii\db\Exception

接続に失敗した場合

                public function open()
{
    if ($this->pdo !== null) {
        return;
    }
    if (!empty($this->masters)) {
        $db = $this->getMaster();
        if ($db !== null) {
            $this->pdo = $db->pdo;
            return;
        }
        throw new InvalidConfigException('None of the master DB servers is available.');
    }
    if (empty($this->dsn)) {
        throw new InvalidConfigException('Connection::dsn cannot be empty.');
    }
    $token = 'Opening DB connection: ' . $this->dsn;
    $enableProfiling = $this->enableProfiling;
    try {
        if ($this->enableLogging) {
            Yii::info($token, __METHOD__);
        }
        if ($enableProfiling) {
            Yii::beginProfile($token, __METHOD__);
        }
        $this->pdo = $this->createPdoInstance();
        $this->initConnection();
        if ($enableProfiling) {
            Yii::endProfile($token, __METHOD__);
        }
    } catch (\PDOException $e) {
        if ($enableProfiling) {
            Yii::endProfile($token, __METHOD__);
        }
        throw new Exception($e->getMessage(), $e->errorInfo, $e->getCode(), $e);
    }
}

            
openFromPool() protected メソッド

プール内のサーバーへの接続を開きます。

このメソッドは、指定されたサーバーリスト間でのロードバランシングとフェイルオーバーを実装します。接続はランダムな順序で試行されます。フェイルオーバーの動作の詳細については、openFromPoolSequentially()を参照してください。

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

protected yii\db\Connection|null openFromPool ( array $pool, array $sharedConfig )
$pool 配列

サーバープール内の接続設定のリスト

$sharedConfig 配列

$poolで指定されたものに共通の設定。

return yii\db\Connection|null

開かれたDB接続。サーバーが利用できない場合はnull

throws yii\base\InvalidConfigException

設定で「dsn」が指定されていない場合

                protected function openFromPool(array $pool, array $sharedConfig)
{
    shuffle($pool);
    return $this->openFromPoolSequentially($pool, $sharedConfig);
}

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

プール内のサーバーへの接続を開きます。

このメソッドは、指定されたサーバーリスト間でのフェイルオーバーを実装します。接続は順番に試行されます。最初に成功した接続が返されます。

$serverStatusCacheが設定されている場合、このメソッドは到達不能なサーバーに関する情報をキャッシュし、$serverRetryIntervalで設定された時間の間、これらのサーバーへの接続を試行しません。これにより、一部のサーバーが利用できない場合にアプリケーションを安定させることができます。利用できないサーバーへの接続試行を避けることで、接続試行がタイムアウトで失敗する場合に時間を節約できます。

いずれのサーバーも利用できない場合、ステータスキャッシュは無視され、すべてのサーバーへの接続試行が行われます(バージョン2.0.35以降)。これは、すべてのサーバーが短時間利用できない場合にダウンタイムを回避するためです。接続試行が成功すると、サーバーは再び利用可能としてマークされます。

以下も参照

protected yii\db\Connection|null openFromPoolSequentially ( array $pool, array $sharedConfig )
$pool 配列

サーバープール内の接続設定のリスト

$sharedConfig 配列

$poolで指定されたものに共通の設定。

return yii\db\Connection|null

開かれたDB接続。サーバーが利用できない場合はnull

throws yii\base\InvalidConfigException

設定で「dsn」が指定されていない場合

                protected function openFromPoolSequentially(array $pool, array $sharedConfig)
{
    if (empty($pool)) {
        return null;
    }
    if (!isset($sharedConfig['class'])) {
        $sharedConfig['class'] = get_class($this);
    }
    $cache = is_string($this->serverStatusCache) ? Yii::$app->get($this->serverStatusCache, false) : $this->serverStatusCache;
    foreach ($pool as $i => $config) {
        $pool[$i] = $config = array_merge($sharedConfig, $config);
        if (empty($config['dsn'])) {
            throw new InvalidConfigException('The "dsn" option must be specified.');
        }
        $key = [__METHOD__, $config['dsn']];
        if ($cache instanceof CacheInterface && $cache->get($key)) {
            // should not try this dead server now
            continue;
        }
        /* @var $db Connection */
        $db = Yii::createObject($config);
        try {
            $db->open();
            return $db;
        } catch (\Exception $e) {
            Yii::warning("Connection ({$config['dsn']}) failed: " . $e->getMessage(), __METHOD__);
            if ($cache instanceof CacheInterface) {
                // mark this server as dead and only retry it after the specified interval
                $cache->set($key, 1, $this->serverRetryInterval);
            }
            // exclude server from retry below
            unset($pool[$i]);
        }
    }
    if ($cache instanceof CacheInterface) {
        // if server status cache is enabled and no server is available
        // ignore the cache and try to connect anyway
        // $pool now only contains servers we did not already try in the loop above
        foreach ($pool as $config) {
            /* @var $db Connection */
            $db = Yii::createObject($config);
            try {
                $db->open();
            } catch (\Exception $e) {
                Yii::warning("Connection ({$config['dsn']}) failed: " . $e->getMessage(), __METHOD__);
                continue;
            }
            // mark this server as available again after successful connection
            $cache->delete([__METHOD__, $config['dsn']]);
            return $db;
        }
    }
    return null;
}

            
quoteColumnName() public メソッド

クエリで使用するために列名を引用符で囲みます。

カラム名にプレフィックスが含まれている場合、プレフィックスも適切に引用符で囲まれます。カラム名が既に引用符で囲まれているか、'('、'[['、'{{'などの特殊文字が含まれている場合、このメソッドは何も行いません。

public string quoteColumnName ( $name )
$name 文字列

カラム名

return 文字列

適切に引用符で囲まれたカラム名

                public function quoteColumnName($name)
{
    if (isset($this->_quotedColumnNames[$name])) {
        return $this->_quotedColumnNames[$name];
    }
    return $this->_quotedColumnNames[$name] = $this->getSchema()->quoteColumnName($name);
}

            
quoteSql() public メソッド

二重角括弧で囲まれたテーブル名と列名を引用符で囲むことによって、SQLステートメントを処理します。

二重中括弧で囲まれたトークンはテーブル名として扱われ、二重角括弧で囲まれたトークンはカラム名として扱われます。これらは適切に引用符で囲まれます。また、テーブル名の先頭または末尾にあるパーセント文字「%」は、$tablePrefixに置き換えられます。

public string quoteSql ( $sql )
$sql 文字列

引用符で囲むSQL

return 文字列

引用符で囲まれたSQL

                public function quoteSql($sql)
{
    return preg_replace_callback(
        '/(\\{\\{(%?[\w\-\. ]+%?)\\}\\}|\\[\\[([\w\-\. ]+)\\]\\])/',
        function ($matches) {
            if (isset($matches[3])) {
                return $this->quoteColumnName($matches[3]);
            }
            return str_replace('%', $this->tablePrefix, $this->quoteTableName($matches[2]));
        },
        $sql
    );
}

            
quoteTableName() public メソッド

クエリで使用するためにテーブル名を引用符で囲みます。

テーブル名にスキーマプレフィックスが含まれている場合、プレフィックスも適切に引用符で囲まれます。テーブル名が既に引用符で囲まれているか、'('、'[['、'{{'などの特殊文字が含まれている場合、このメソッドは何も行いません。

public string quoteTableName ( $name )
$name 文字列

テーブル名

return 文字列

適切に引用符で囲まれたテーブル名

                public function quoteTableName($name)
{
    if (isset($this->_quotedTableNames[$name])) {
        return $this->_quotedTableNames[$name];
    }
    return $this->_quotedTableNames[$name] = $this->getSchema()->quoteTableName($name);
}

            
quoteValue() public メソッド

クエリで使用するために文字列値を引用符で囲みます。

パラメータが文字列でない場合は、変更されずに返されることに注意してください。

https://www.php.net/manual/en/pdo.quote.phpも参照してください。

public string quoteValue ( $value )
$value 文字列

引用符で囲む文字列

return 文字列

適切に引用符で囲まれた文字列

                public function quoteValue($value)
{
    return $this->getSchema()->quoteValue($value);
}

            
setDriverName() public メソッド

現在のドライバ名を変更します。

public void setDriverName ( $driverName )
$driverName 文字列

DBドライバの名前

                public function setDriverName($driverName)
{
    $this->_driverName = strtolower($driverName);
}

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

Connection設定配列を介してyii\db\QueryBuilderを設定するために使用できます。

public void setQueryBuilder ( $value )
$value 配列

設定するyii\db\QueryBuilderプロパティ。

                public function setQueryBuilder($value)
{
    Yii::configure($this->getQueryBuilder(), $value);
    $this->_queryBuilderConfigurations[] = $value;
}

            
transaction() public メソッド

トランザクションで提供されたコールバックを実行します。

public mixed transaction ( callable $callback, $isolationLevel null )
$callback callable

ジョブを実行する有効なPHPコールバック。パラメータとして接続インスタンスを受け入れます。

$isolationLevel string|null

このトランザクションに使用する分離レベル。詳細については、yii\db\Transaction::begin()を参照してください。

return mixed

コールバック関数の結果

throws Throwable

クエリ中に例外が発生した場合。この場合、トランザクションはロールバックされます。

                public function transaction(callable $callback, $isolationLevel = null)
{
    $transaction = $this->beginTransaction($isolationLevel);
    $level = $transaction->level;
    try {
        $result = call_user_func($callback, $this);
        if ($transaction->isActive && $transaction->level === $level) {
            $transaction->commit();
        }
    } catch (\Exception $e) {
        $this->rollbackTransactionOnLevel($transaction, $level);
        throw $e;
    } catch (\Throwable $e) {
        $this->rollbackTransactionOnLevel($transaction, $level);
        throw $e;
    }
    return $result;
}

            
trigger() public メソッド

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

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

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

public void trigger ( $name, yii\base\Event $event null )
$name 文字列

イベント名

$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);
}

            
useMaster() public メソッド

マスター接続を使用して、提供されたコールバックを実行します。

このメソッドは、読み取りクエリであっても、DB操作を実行するために一時的にマスター接続を強制的に使用できるようにするために提供されています。例えば、

$result = $db->useMaster(function ($db) {
    return $db->createCommand('SELECT * FROM user LIMIT 1')->queryOne();
});
public mixed useMaster ( callable $callback )
$callback callable

このメソッドで実行されるPHPのcallable。そのシグネチャはfunction (Connection $db)です。その戻り値は、このメソッドによって返されます。

return mixed

コールバックの戻り値

throws Throwable

コールバックから例外がスローされた場合

                public function useMaster(callable $callback)
{
    if ($this->enableSlaves) {
        $this->enableSlaves = false;
        try {
            $result = call_user_func($callback, $this);
        } catch (\Exception $e) {
            $this->enableSlaves = true;
            throw $e;
        } catch (\Throwable $e) {
            $this->enableSlaves = true;
            throw $e;
        }
        // TODO: use "finally" keyword when miminum required PHP version is >= 5.5
        $this->enableSlaves = true;
    } else {
        $result = call_user_func($callback, $this);
    }
    return $result;
}

            

イベント詳細

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

EVENT_AFTER_OPEN yii\base\Event型のイベント

DB接続が確立された後にトリガーされるイベント

EVENT_BEGIN_TRANSACTION yii\base\Event型のイベント

トップレベルトランザクションが開始される直前にトリガーされるイベント

EVENT_COMMIT_TRANSACTION yii\base\Event型のイベント

トップレベルトランザクションがコミットされた直後にトリガーされるイベント

EVENT_ROLLBACK_TRANSACTION yii\base\Event型のイベント

トップレベルトランザクションがロールバックされた直後にトリガーされるイベント