You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6.4中Query\Builder::keyBy不存在问题求助

解决Laravel 5.6.4中Query\Builder::keyBy不存在的错误

嘿,这个问题我之前在项目里也踩过坑!你遇到的错误核心原因很明确:keyBy()是**Eloquent Collection(集合)**的方法,而不是Query Builder(查询构造器)的方法。Laravel 5.6版本的Query Builder确实没有内置这个方法,所以直接在查询构造器实例上调用它就会报错。

正确的使用方式

你需要先通过get()方法把查询结果转换成Collection实例,再调用keyBy()。举两个常见场景的例子:

1. 使用DB门面查询普通表

错误写法:

// 直接在Query Builder上调用keyBy,会报错
$result = DB::table('users')->where('status', 1)->keyBy('id');

正确写法:

// 先get()获取集合,再调用keyBy
$result = DB::table('users')->where('status', 1)->get()->keyBy('id');

2. 使用Eloquent模型查询

错误写法:

// 同样直接在模型查询构造器上调用keyBy不行
$posts = Post::where('category_id', 5)->keyBy('slug');

正确写法:

// 先get()拿到集合,再执行keyBy
$posts = Post::where('category_id', 5)->get()->keyBy('slug');

额外提醒:区分keyBy和groupBy

别把keyBy()和Query Builder的groupBy()搞混了:

  • keyBy()是集合方法,作用是把集合中的元素以指定字段的值作为数组的键,方便后续通过键快速查找元素;
  • groupBy()是数据库查询方法,作用是对数据库查询结果按指定字段进行分组聚合(比如配合count()、sum()等聚合函数使用)。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:51:58