Laravel - 使用唯一的 JSON 响应结构不正确
Posted
技术标签:
【中文标题】Laravel - 使用唯一的 JSON 响应结构不正确【英文标题】:Laravel - Incorrect JSON response structure when using unique 【发布时间】:2020-11-02 10:47:31 【问题描述】:所以我有一个基本查询,它返回我们的Period
模型,这个查询可以选择通过Project
关系过滤这些时期。这是下面的精简版...
$query = Period::query();
$query->whereIn('project_id', [1, 2]);
$entries = $query->get();
$projects = $entries->pluck('project')->unique();
return response()->json($projects);
因此,鉴于上述代码,由于某种原因,返回的 JSON 不是对象数组,而是对象对象,例如 "0":, "2":
。如果我删除 unique()
调用,那么它会正确返回一个对象数组。
带有和不带有唯一方法的集合都是Illuminate\Support\Collection
的实例,并且集合的items
属性都是对象数组,所以我看不出为什么它返回了差异结构。
我能看到的唯一区别是,当我用unique
调用dd
集合时,键是绿色的,而没有唯一调用它们是蓝色的,表示字符串和整数,但是当我这样做时$projects->keys()
它们都是整数(但 keys
可以将它们转换为整数吗?)。
使用unique
调用:
没有unique
调用:
【问题讨论】:
【参考方案1】:我已经弄清楚了,unique
保留了项目的原始键,这意味着它们不一定按数字顺序排列,因此不能进行 JSON 编码,因此它会返回一个对象。
使用->unique()->values()
可以解决此问题。
【讨论】:
打败我吧 :)以上是关于Laravel - 使用唯一的 JSON 响应结构不正确的主要内容,如果未能解决你的问题,请参考以下文章