laravel - 拉拉维尔 | groupBy 作为对象返回
问题描述
我正在尝试使用 Laravel 集合将 agroupBy
作为数组返回。但是,无论如何,它似乎总是作为对象返回。我试过这样做$posts->groupBy('category')->toArray()
,但这似乎仍然作为一个对象返回。我也尝试过$posts->groupBy('category')->all()
,但它仍然作为对象返回。
我不知道这是否与 Laravel 在路由中返回方法有关,但我需要它作为数组返回。
这是代码:
public function getFeatures($id)
{
return Feature::query()->get()->groupBy('category')->toArray();
}
实际代码工作正常,我得到了结果,但它似乎并没有转换为数组。谢谢。
解决方案
当使用 Eloquent 进行查询以获取(可能)多个项目时,Laravel 将始终返回包含所有模型对象的Collection类的实例。如果您需要将它们转换为数组以在视图中使用它们,您可以compact
使用元素。compact
将创建集合元素的关联数组:
public function getFeatures($id)
{
$features = Feature::all();
return view('my_cool_view', compact($features));
}
另一方面,如果您需要将它们转换为数组以通过 API 返回它们,Laravel 默认将响应转换为 JSON:
public function getFeatures($id)
{
return Feature::all();
}
现在,如果您需要将集合转换为数组,请按照toArray()
您的指示使用:
public function getFeatures($id)
{
$collection_of_features = Feature::all();
$array_of_features = $collection_of_features->toArray();
// use it for wherever you want.
}
推荐阅读
- javascript - 使用WEBRTC截屏,了解用户流选择
- javascript - 正则表达式:如何在javascript中将“ab”拆分为“a”“.b”
- json - Excel COM 加载项中的 JsonServiceClient C#
- java - 如何显示 firebase 数据库中的所有标记?
- html - 继承模板上的 Jinja 范围
- javascript - 如何使用 setState 函数?
- php - 将 preg_match() 结果与 (bool) 一起使用?
- java - Java中的正则表达式问题
- python - selenium.common.exceptions.StaleElementReferenceException:消息:过时的元素引用:元素未附加到页面
- reactjs - React 组件测试:“酶”是测试类组件,“测试库”更多的是功能组件吗?