获取迭代器形式的多行记录
更新时间:2024年9月17日 23:28
浏览:469
迭代器方法底层通过 yield 实现,返回一个 迭代器(\Generator)
迭代器可以当成数组循环获取数据,每次循环只取出一条查询到的数据,同时游标前移。迭代器消耗的内存极少,可用于处理远大于内存的海量数据。
- getYieldObjects - 对象数组
- getYieldArrays - 二维数组
- getYieldValues - 单列数组
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;
}