0 フォロワー

クラス yii\db\DataReader

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

DataReader は、クエリ結果セットから前方のみに読み取り可能な行のストリームを表します。

現在のデータの行を読み取るには、read() を呼び出します。メソッド readAll() は、すべての行を単一の配列で返します。データの行は、リーダーを反復処理することによっても読み取ることができます。たとえば、

$command = $connection->createCommand('SELECT * FROM post');
$reader = $command->query();

while ($row = $reader->read()) {
    $rows[] = $row;
}

// equivalent to:
foreach ($reader as $row) {
    $rows[] = $row;
}

// equivalent to:
$rows = $reader->readAll();

DataReader は前方のみのストリームであるため、一度しか走査できないことに注意してください。2 回目に行うと例外がスローされます。

$fetchMode を設定することで、特定のデータフェッチモードを使用できます。可能なフェッチモードの詳細については、PHP マニュアルを参照してください。

公開プロパティ

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

プロパティ 説明 定義元
$columnCount integer 結果セット内の列の数。 yii\db\DataReader
$fetchMode integer フェッチモード。 yii\db\DataReader
$isClosed boolean リーダーが閉じているかどうか。 yii\db\DataReader
$rowCount integer 結果に含まれる行数。 yii\db\DataReader

公開メソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\BaseObject
__construct() コンストラクタ。 yii\db\DataReader
__get() オブジェクトプロパティの値を返します。 yii\base\BaseObject
__isset() プロパティが設定されているか、つまり定義されていて null でないかを確認します。 yii\base\BaseObject
__set() オブジェクトプロパティの値を設定します。 yii\base\BaseObject
__unset() オブジェクトプロパティを null に設定します。 yii\base\BaseObject
bindColumn() 列を PHP 変数にバインドします。 yii\db\DataReader
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\BaseObject
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\BaseObject
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
close() リーダーを閉じます。 yii\db\DataReader
count() 結果セット内の行数を返します。 yii\db\DataReader
current() 現在の行を返します。 yii\db\DataReader
getColumnCount() 結果セット内の列数を返します。 yii\db\DataReader
getIsClosed() リーダーが閉じているかどうか。 yii\db\DataReader
getRowCount() 結果セット内の行数を返します。 yii\db\DataReader
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\base\BaseObject
key() 現在の行のインデックスを返します。 yii\db\DataReader
next() 内部ポインタを次の行に移動します。 yii\db\DataReader
nextResult() 一連のステートメントの結果を読み取る際に、リーダーを次の結果に進めます。 yii\db\DataReader
read() リーダーを結果セットの次の行に進めます。 yii\db\DataReader
readAll() 結果セット全体を配列に読み込みます。 yii\db\DataReader
readColumn() 結果セットの次の行から単一の列を返します。 yii\db\DataReader
readObject() 次のデータの行が入力されたオブジェクトを返します。 yii\db\DataReader
rewind() イテレータを初期状態にリセットします。 yii\db\DataReader
setFetchMode() このステートメントのデフォルトのフェッチモードを設定します。 yii\db\DataReader
valid() 現在の位置にデータの行があるかどうかを返します。 yii\db\DataReader

プロパティの詳細

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

$columnCount public プロパティ

結果セット内の列の数。

public integer $columnCount null
$fetchMode public プロパティ

フェッチモード。

public integer $fetchMode null
$isClosed public プロパティ

リーダーが閉じているかどうか。

public boolean $isClosed null
$rowCount public プロパティ

結果に含まれる行数。

public integer $rowCount null

メソッドの詳細

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

__call() public メソッド

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

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

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

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

メソッド名

$params array

メソッドのパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

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

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

            
__construct() public メソッド

コンストラクタ。

public void __construct ( yii\db\Command $command, $config = [] )
$command yii\db\Command

クエリ結果を生成するコマンド

$config array

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

                public function __construct(Command $command, $config = [])
{
    $this->_statement = $command->pdoStatement;
    $this->_statement->setFetchMode(\PDO::FETCH_ASSOC);
    parent::__construct($config);
}

            
__get() public メソッド

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

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

このメソッドは、$value = $object->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)) {
        return $this->$getter();
    } elseif (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public メソッド

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

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

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

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

参照: https://www.php.net/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

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

return boolean

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

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

            
__set() public メソッド

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

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

このメソッドは、$object->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)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__unset() public メソッド

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

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

このメソッドは、unset($object->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);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
bindColumn() public メソッド

列を PHP 変数にバインドします。

データ行がフェッチされるとき、対応する列の値が変数に設定されます。フェッチモードにPDO::FETCH_BOUNDが含まれている必要があることに注意してください。

参照: https://www.php.net/manual/en/function.PDOStatement-bindColumn.php

public void bindColumn ( $column, &$value, $dataType null )
$column integer|string

結果セット内の列の番号(1から始まるインデックス)または列の名前。列の名前を使用する場合は、名前がドライバーから返された列の大文字と小文字に一致する必要があることに注意してください。

$value mixed

列がバインドされるPHP変数の名前。

$dataType integer|null

パラメータのデータ型

                public function bindColumn($column, &$value, $dataType = null)
{
    if ($dataType === null) {
        $this->_statement->bindColumn($column, $value);
    } else {
        $this->_statement->bindColumn($column, $value, $dataType);
    }
}

            
canGetProperty() public メソッド

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

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

プロパティが読み取り可能であるのは以下のいずれかの場合です。

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

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

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

プロパティ名

$checkVars boolean

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

return boolean

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

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

            
canSetProperty() public メソッド

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

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

プロパティが書き込み可能であるのは、

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

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

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

プロパティ名

$checkVars boolean

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

return boolean

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

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

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

            
close() public メソッド

リーダーを閉じます。

これにより、このSQLステートメントの実行に割り当てられたリソースが解放されます。このメソッド呼び出し後の読み取り試行は予測できません。

public void close ( )

                public function close()
{
    $this->_statement->closeCursor();
    $this->_closed = true;
}

            
count() public メソッド

結果セット内の行数を返します。

このメソッドは、Countable インターフェースで必要です。ほとんどの DBMS は意味のあるカウントを提供しない可能性があることに注意してください。この場合は、行数を取得するために "SELECT COUNT(*) FROM tableName" を使用してください。

public integer count ( )
return integer

結果に含まれる行数。

                #[\ReturnTypeWillChange]
public function count()
{
    return $this->getRowCount();
}

            
current() public メソッド

現在の行を返します。

このメソッドはインターフェース Iterator で必要です。

public mixed current ( )
return mixed

現在の行。

                #[\ReturnTypeWillChange]
public function current()
{
    return $this->_row;
}

            
getColumnCount() public メソッド

結果セット内の列数を返します。

リーダーに行がない場合でも、これは正しい列数を返します。

public integer getColumnCount ( )
return integer

結果セット内の列の数。

                public function getColumnCount()
{
    return $this->_statement->columnCount();
}

            
getIsClosed() public メソッド

リーダーが閉じているかどうか。

public boolean getIsClosed ( )
return boolean

リーダーが閉じているかどうか。

                public function getIsClosed()
{
    return $this->_closed;
}

            
getRowCount() public メソッド

結果セット内の行数を返します。

ほとんどの DBMS は意味のあるカウントを提供しない可能性があることに注意してください。この場合は、行数を取得するために "SELECT COUNT(*) FROM tableName" を使用してください。

public integer getRowCount ( )
return integer

結果に含まれる行数。

                public function getRowCount()
{
    return $this->_statement->rowCount();
}

            
hasMethod() public メソッド

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

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

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

public boolean hasMethod ( $name )
$name string

メソッド名

return boolean

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

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

            
hasProperty() public メソッド

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

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

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

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

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

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

プロパティ名

$checkVars boolean

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

return boolean

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

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

            
init() public メソッド

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

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

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

public void init ( )

                public function init()
{
}

            
key() public メソッド

現在の行のインデックスを返します。

このメソッドはインターフェース Iterator で必要です。

public integer key ( )
return integer

現在の行のインデックス。

                #[\ReturnTypeWillChange]
public function key()
{
    return $this->_index;
}

            
next() public メソッド

内部ポインタを次の行に移動します。

このメソッドはインターフェース Iterator で必要です。

public void next ( )

                #[\ReturnTypeWillChange]
public function next()
{
    $this->_row = $this->_statement->fetch();
    $this->_index++;
}

            
nextResult() public メソッド

一連のステートメントの結果を読み取る際に、リーダーを次の結果に進めます。

このメソッドは、クエリによって複数の結果セットが返される場合にのみ有用です。すべての DBMS がこの機能をサポートしているわけではありません。

public boolean nextResult ( )
return boolean

成功時に true を返し、失敗時に false を返します。

                public function nextResult()
{
    if (($result = $this->_statement->nextRowset()) !== false) {
        $this->_index = -1;
    }
    return $result;
}

            
read() public メソッド

リーダーを結果セットの次の行に進めます。

public array read ( )
return array

現在の行。利用可能な行がない場合は false。

                public function read()
{
    return $this->_statement->fetch();
}

            
readAll() public メソッド

結果セット全体を配列に読み込みます。

public array readAll ( )
return array

結果セット(配列の各要素はデータの行を表します)。結果に行が含まれない場合は空の配列が返されます。

                public function readAll()
{
    return $this->_statement->fetchAll();
}

            
readColumn() public メソッド

結果セットの次の行から単一の列を返します。

public mixed readColumn ( $columnIndex )
$columnIndex integer

0から始まる列のインデックス

return mixed

現在の行の列。利用可能な行がない場合は false。

                public function readColumn($columnIndex)
{
    return $this->_statement->fetchColumn($columnIndex);
}

            
readObject() public メソッド

次のデータの行が入力されたオブジェクトを返します。

public mixed readObject ( $className, $fields )
$className string

作成およびデータ設定するオブジェクトのクラス名

$fields array

この配列の要素はコンストラクタに渡されます

return mixed

データが設定されたオブジェクト。利用可能なデータの行がない場合は false。

                public function readObject($className, $fields)
{
    return $this->_statement->fetchObject($className, $fields);
}

            
rewind() public メソッド

イテレータを初期状態にリセットします。

このメソッドはインターフェース Iterator で必要です。

public void rewind ( )
throws yii\base\InvalidCallException

このメソッドが2回呼び出された場合

                #[\ReturnTypeWillChange]
public function rewind()
{
    if ($this->_index < 0) {
        $this->_row = $this->_statement->fetch();
        $this->_index = 0;
    } else {
        throw new InvalidCallException('DataReader cannot rewind. It is a forward-only reader.');
    }
}

            
setFetchMode() public メソッド

このステートメントのデフォルトのフェッチモードを設定します。

参照: https://www.php.net/manual/en/function.PDOStatement-setFetchMode.php

public void setFetchMode ( $mode )
$mode integer

フェッチモード

                public function setFetchMode($mode)
{
    $params = func_get_args();
    call_user_func_array([$this->_statement, 'setFetchMode'], $params);
}

            
valid() public メソッド

現在の位置にデータの行があるかどうかを返します。

このメソッドはインターフェース Iterator で必要です。

public boolean valid ( )
return boolean

現在の位置にデータの行があるかどうか。

                #[\ReturnTypeWillChange]
public function valid()
{
    return $this->_row !== false;
}