开发文档 v2.x

获取迭代器形式的多行记录

更新时间:2024年3月21日 00:06 浏览:230

迭代器方法底层通过 yield 实现,返回一个 迭代器(\Generator)

迭代器可以当成数组循环获取数据,每次循环只取出一条查询到的数据,同时游标前移。迭代器消耗的内存极少,可用于处理远大于内存的海量数据。

 

 

getYieldObjects - 对象数组

获取迭代器形式的多条对象数组格式的记录

public function getYieldObjects(string $fields = null): \Generator

参数:

  • string $fields - 字段列表,未指定时返回该表所有字段

返回值:

  • \Generator - 迭代器形式的对象数组

 

代码示例:

// 所有字段
$users = Be::getTable('user')
    ->where('age', '<', 18)
    ->getYieldObjects();

// 指定字段列表
$user = Be::getTable('user')
    ->where('age', '<', 18)
    ->getYieldObjects('id, name, age');

foreach($users as $user) {
    // $user->name;
}

 

getYieldArrays - 二维数组

获取迭代器形式的多条二维数组格式的记录

public function getYieldArrays(string $fields = null): \Generator

参数:

  • string $fields - 字段列表,未指定时返回该表所有字段

返回值:

  • \Generator - 迭代器形式的二维数组

 

代码示例:

// 所有字段
$users = Be::getTable('user')
    ->where('age', '<', 18)
    ->getYieldArrays();

// 指定字段列表
$users = Be::getTable('user')
    ->where('age', '<', 18)
    ->getYieldArrays('id, name, age');

foreach($users as $user) {
    // $user['name'];
}

 

getYieldValues - 单列数组

获取迭代器形式的由指定字段的值组成的一维数组

public function getYieldValues(string $field): \Generator

参数:

  • string $field - 字段名

返回值:

  • \Generator - 迭代器形式的数组

 

代码示例:

// 获取所有18岁的用户名
$names = Be::getTable('user')
    ->where('age', 18)
    ->getYieldValues('name');

foreach($names as $name) {
    // $name;
}

 

导航