# 结果检索
### [](https://octobercms.com/docs/database/query#retrieving-results)检索结果
#### 检索表中的所有行
要开始流利的查询,请使用外观`table`上的方法`Db`。该`table`方法为给定的表返回一个流畅的查询生成器实例,使您可以将更多约束链接到查询上,然后最终获得结果。在此示例中,让我们仅`get`查看表中的所有记录:
~~~
$users = Db::table('users')->get();
~~~
像[原始查询](https://octobercms.com/docs/database/basics#running-queries)一样,该`get`方法返回`array`结果的,其中每个结果都是PHP`stdClass`对象的实例。您可以通过将列作为对象的属性来访问来访问每个列的值:
~~~
foreach ($users as $user) {
echo $user->name;
}
~~~
#### 从表中检索单个行/列
如果只需要从数据库表中检索一行,则可以使用该`first`方法。此方法将返回一个`stdClass`对象:
~~~
$user = Db::table('users')->where('name', 'John')->first();
echo $user->name;
~~~
如果您甚至不需要整行,都可以使用`value`方法从记录中提取单个值。此方法将直接返回列的值:
~~~
$email = Db::table('users')->where('name', 'John')->value('email');
~~~
#### 检索列值列表
如果要检索包含单个列的值的数组,则可以使用该`lists`方法。在此示例中,我们将检索一组角色标题:
~~~
$titles = Db::table('roles')->lists('title');
foreach ($titles as $title) {
echo $title;
}
~~~
您还可以为返回的数组指定一个自定义键列:
~~~
$roles = Db::table('roles')->lists('title', 'name');
foreach ($roles as $name => $title) {
echo $title;
}
~~~
### [](https://octobercms.com/docs/database/query#chunking-results)分块结果
如果您需要处理数千个数据库记录,请考虑使用该`chunk`方法。此方法一次检索一个小的“块”结果,然后将每个块馈入`Closure`进行处理。该方法对于编写可处理数千条记录的[控制台命令](https://octobercms.com/docs/console/development)非常有用。例如,让我们`users`一次以100条记录的块来处理整个表:
~~~
Db::table('users')->chunk(100, function($users) {
foreach ($users as $user) {
//
}
});
~~~
您可以通过返回`false`来停止处理其他块`Closure`:
~~~
Db::table('users')->chunk(100, function($users) {
// Process the records...
return false;
});
~~~
如果在对结果进行分块时更新数据库记录,则分块结果可能会以意想不到的方式更改。因此,在分块时更新记录时,最好总是使用该`chunkById`方法。此方法将基于记录的主键自动对结果进行分页:
~~~
Db::table('users')->where('active', false)
->chunkById(100, function ($users) {
foreach ($users as $user) {
Db::table('users')
->where('id', $user->id)
->update(['active' => true]);
}
});
~~~
> **注意:**更新或删除块回调中的记录时,对主键或外键的任何更改都可能影响块查询。这可能导致记录未包含在分块结果中。
### [](https://octobercms.com/docs/database/query#aggregates)骨料
查询生成器还提供了多种聚合方法,如`count`,`max`,`min`,`avg`,和`sum`。您可以在构造查询后调用以下任何一种方法:
~~~
$users = Db::table('users')->count();
$price = Db::table('orders')->max('price');
~~~
当然,您可以将这些方法与其他子句结合使用来构建查询:
~~~
$price = Db::table('orders')
->where('is_finalized', 1)
->avg('price');
~~~
#### 确定记录是否存在
而不是使用的`count`方法,以确定是否有任何记录存在您搜索条件的限制,你可以使用`exists`和`doesntExist`方法:
~~~
return Db::table('orders')->where('finalized', 1)->exists();
return Db::table('orders')->where('finalized', 1)->doesntExist();
~~~
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图