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

// 相当于:
foreach ($reader as $row) {
    $rows[] = $row;
}

// 相当于:
$rows = $reader->readAll();

Note: 由于 DataReader 是只向前流, 因此只能遍历一次. 第二次这样做会引发异常.

通过设置 $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

方法详情

__construct() public 方法

构造函数.

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

生成查询结果的命令.

$config array

将用于初始化对象属性的 name-value 对.

bindColumn() public 方法

将列绑定到 PHP 变量.

当获取数据行时, 将在变量中设置相应的列值.

Note: 获取模式必须包含 PDO::FETCH_BOUND.

参见 https://secure.php.net/manual/en/function.PDOStatement-bindColumn.php.

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

结果集中的列号(从1开始索引)或列的名称. 如果使用列名称, 请注意该名称应与驱动程序返回的列的大小写匹配.

$value mixed

该列将被绑定到 PHP 变量的名称.

$dataType integer

参数的数据类型.

close() public 方法

关闭阅读器.

这样可以释放为执行此 SQL 语句分配的资源. 在此方法调用之后读取尝试是不可预测的.

public void close ( )
count() public 方法

返回结果集中的行数.

Countable 接口需要此方法.

Note: 大多数 DBMS 可能无法给出有意义的计数. 在这种情况下, 使用"SELECT COUNT(*) FROM tableName"来获取行数.

public integer count ( )
return integer

结果集中包含的行数.

current() public 方法

返回当前行.

接口 Iterator 必须此方法.

public mixed current ( )
return mixed

当前行.

getColumnCount() public 方法

返回结果集中的列数.

Note: 即使阅读器中没有行, 这仍然可以提供正确的列号.

public integer getColumnCount ( )
return integer

结果集中的列数.

getIsClosed() public 方法

阅读器是否已关闭.

public boolean getIsClosed ( )
return boolean

阅读器是否已关闭.

getRowCount() public 方法

返回结果集中的行数.

Note: 大多数 DBMS 可能无法给出有意义的计数. 在这种情况下, 使用"SELECT COUNT(*) FROM tableName"来获取行数.

public integer getRowCount ( )
return integer

结果集中包含的行数.

key() public 方法

返回当前行的索引.

接口 Iterator 必须此方法.

public integer key ( )
return integer

当前行的索引.

next() public 方法

将内部指针移动到下一行.

接口 Iterator 必须此方法.

public void next ( )
nextResult() public 方法

读取一批语句的结果时, 让阅读器前进到下一个结果.

仅当查询返回多个结果集时, 此方法才有用. 并非所有d DBMS 都支持此功能.

public boolean nextResult ( )
return boolean

成功返回true; 或失败返回false.

read() public 方法

将阅读器前进到结果集中的下一行.

public array read ( )
return array

当前行, 如果没有更多行可用, 则返回false.

readAll() public 方法

将整个结果集读取到一个数组中.

public array readAll ( )
return array

结果集(每个数组元素表示一行数据). 如果结果不包含任何行, 则将返回一个空数组.

readColumn() public 方法

从结果集的下一行返回一列.

public mixed readColumn ( $columnIndex )
$columnIndex integer

0开始的列索引.

return mixed

当前行的列, 如果没有更多行可用, 则返回false.

readObject() public 方法

返回填充有下一行数据的对象.

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

要创建和填充的对象的类名.

$fields array

该数组的元素传递给构造函数.

return mixed

填充的对象, 如果没有更多的可用数据行, 则返回false.

rewind() public 方法

将迭代器重置为初始状态.

接口 Iterator 必须此方法.

public void rewind ( )
throws yii\base\InvalidCallException

如果该方法被调用两次.

setFetchMode() public 方法

设置此语句的默认获取模式.

参见 https://secure.php.net/manual/en/function.PDOStatement-setFetchMode.php.

public void setFetchMode ( $mode )
$mode integer

获取模式.

valid() public 方法

返回当前位置是否存在一行数据.

接口 Iterator 必须此方法.

public boolean valid ( )
return boolean

当前位置是否有一行数据.