クラス 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 |
公開メソッド
プロパティの詳細
メソッドの詳細
定義元: 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()");
}
コンストラクタ。
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);
}
定義元: 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);
}
定義元: yii\base\BaseObject::__isset()
プロパティが設定されているか、つまり定義されていて null でないかを確認します。
このメソッドは、isset($object->property)
を実行したときに暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。
プロパティが定義されていない場合、falseが返されることに注意してください。
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;
}
定義元: 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);
}
}
定義元: yii\base\BaseObject::__unset()
オブジェクトプロパティを null に設定します。
このメソッドは、unset($object->property)
を実行したときに暗黙的に呼び出される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);
}
}
列を 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);
}
}
定義元: 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);
}
定義元: 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);
}
::class
を使用してください。
定義元: yii\base\BaseObject::className()
このクラスの完全修飾名を返します。
public static string className ( ) | ||
return | string |
このクラスの完全修飾名。 |
---|
public static function className()
{
return get_called_class();
}
リーダーを閉じます。
これにより、このSQLステートメントの実行に割り当てられたリソースが解放されます。このメソッド呼び出し後の読み取り試行は予測できません。
public void close ( ) |
public function close()
{
$this->_statement->closeCursor();
$this->_closed = true;
}
結果セット内の行数を返します。
このメソッドは、Countable インターフェースで必要です。ほとんどの DBMS は意味のあるカウントを提供しない可能性があることに注意してください。この場合は、行数を取得するために "SELECT COUNT(*) FROM tableName" を使用してください。
public integer count ( ) | ||
return | integer |
結果に含まれる行数。 |
---|
#[\ReturnTypeWillChange]
public function count()
{
return $this->getRowCount();
}
現在の行を返します。
このメソッドはインターフェース Iterator で必要です。
public mixed current ( ) | ||
return | mixed |
現在の行。 |
---|
#[\ReturnTypeWillChange]
public function current()
{
return $this->_row;
}
結果セット内の列数を返します。
リーダーに行がない場合でも、これは正しい列数を返します。
public integer getColumnCount ( ) | ||
return | integer |
結果セット内の列の数。 |
---|
public function getColumnCount()
{
return $this->_statement->columnCount();
}
リーダーが閉じているかどうか。
public boolean getIsClosed ( ) | ||
return | boolean |
リーダーが閉じているかどうか。 |
---|
public function getIsClosed()
{
return $this->_closed;
}
結果セット内の行数を返します。
ほとんどの DBMS は意味のあるカウントを提供しない可能性があることに注意してください。この場合は、行数を取得するために "SELECT COUNT(*) FROM tableName" を使用してください。
public integer getRowCount ( ) | ||
return | integer |
結果に含まれる行数。 |
---|
public function getRowCount()
{
return $this->_statement->rowCount();
}
定義元: 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);
}
定義元: 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);
}
public void init ( ) |
public function init()
{
}
現在の行のインデックスを返します。
このメソッドはインターフェース Iterator で必要です。
public integer key ( ) | ||
return | integer |
現在の行のインデックス。 |
---|
#[\ReturnTypeWillChange]
public function key()
{
return $this->_index;
}
内部ポインタを次の行に移動します。
このメソッドはインターフェース Iterator で必要です。
public void next ( ) |
#[\ReturnTypeWillChange]
public function next()
{
$this->_row = $this->_statement->fetch();
$this->_index++;
}
一連のステートメントの結果を読み取る際に、リーダーを次の結果に進めます。
このメソッドは、クエリによって複数の結果セットが返される場合にのみ有用です。すべての DBMS がこの機能をサポートしているわけではありません。
public boolean nextResult ( ) | ||
return | boolean |
成功時に true を返し、失敗時に false を返します。 |
---|
public function nextResult()
{
if (($result = $this->_statement->nextRowset()) !== false) {
$this->_index = -1;
}
return $result;
}
リーダーを結果セットの次の行に進めます。
public array read ( ) | ||
return | array |
現在の行。利用可能な行がない場合は false。 |
---|
public function read()
{
return $this->_statement->fetch();
}
結果セット全体を配列に読み込みます。
public array readAll ( ) | ||
return | array |
結果セット(配列の各要素はデータの行を表します)。結果に行が含まれない場合は空の配列が返されます。 |
---|
public function readAll()
{
return $this->_statement->fetchAll();
}
結果セットの次の行から単一の列を返します。
public mixed readColumn ( $columnIndex ) | ||
$columnIndex | integer |
0から始まる列のインデックス |
return | mixed |
現在の行の列。利用可能な行がない場合は false。 |
---|
public function readColumn($columnIndex)
{
return $this->_statement->fetchColumn($columnIndex);
}
次のデータの行が入力されたオブジェクトを返します。
public mixed readObject ( $className, $fields ) | ||
$className | string |
作成およびデータ設定するオブジェクトのクラス名 |
$fields | array |
この配列の要素はコンストラクタに渡されます |
return | mixed |
データが設定されたオブジェクト。利用可能なデータの行がない場合は false。 |
---|
public function readObject($className, $fields)
{
return $this->_statement->fetchObject($className, $fields);
}
イテレータを初期状態にリセットします。
このメソッドはインターフェース 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.');
}
}
このステートメントのデフォルトのフェッチモードを設定します。
参照: 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);
}
サインアップ または ログイン してコメントしてください。