控制器中的 Laravel 通过记录从 foreach 循环返回新的结果集合

Posted

技术标签:

【中文标题】控制器中的 Laravel 通过记录从 foreach 循环返回新的结果集合【英文标题】:Laravel in controller return new collection of results from a foreach loop through records 【发布时间】:2021-03-11 22:33:07 【问题描述】:

这似乎应该很明显,但我发现的所有内容都与返回从记录中提取的集合有关,而不是返回从记录计算中得出的新结果的集合。

例如,假设我的数据库中有财产记录。我可以提取记录子集(或整个集合)的集合。但我想遍历这个集合,计算每个行项目的新值(如 marketValue-debt=netValue),然后将这些结果的新集合返回到我的视图中。我试图将我的(比这个例子复杂得多)计算保留在我的控制器中并且不在我的视图中,但是我没有办法将新值填充到新的结果集合中以返回以显示在视图中.

我可以导出我的结果并将它们填充到一个数组中,但是如何将它作为一个新集合传递,以便在我的视图中循环显示这些结果?似乎应该有一个雄辩的方式来做到这一点。

我的项目在 Laravel 6 中运行,在 Apache/Laragon 上运行,php 7 和 MariaDb

提前感谢您帮助我。

【问题讨论】:

您要查找的是$collection->transform(someCallback() ),它将更改集合中的项目。更多laravel.com/docs/8.x/collections#method-transform 不,我正在尝试使用新的“字段”和值创建一个新集合,然后从控制器传递到视图,而不是修改从数据库中提取的集合。 【参考方案1】:

看看this。希望对您有所帮助。

如果您想要一个新集合,请使用map 方法。

$new_collection = $old_collection->map(function ($item) 
    return $item->marketValue - $item->debtValue;
);

【讨论】:

以上是关于控制器中的 Laravel 通过记录从 foreach 循环返回新的结果集合的主要内容,如果未能解决你的问题,请参考以下文章

如何从控制器获取记录到 Ajax laravel 5.2

如何从Laravel中的数据库记录中填充下拉菜单项

将数据从控制器传递到 Laravel 中的视图

从laravel控制器返回json时尝试获取非对象的属性“id”

通过 Laravel 中的 AJAX 发布请求将值从一个视图传递到另一个视图

通过路由从 Laravel 中的 MySQL 导出列时出错