例如,我有以下代码:
public function index()
{
return
Model::select(['id', 'some_field', ...// more some fields])
->with('data') // load relation
->paginate(20);
}
如何格式化(转换/操作)从数据库中获得的数据?
CakePHP ORM对此有有用的方法-https:book.cakephp.org/3.0/en/orm/query-builder.html#adding-calculated-fields && https://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#map-reduce
但是我找不到任何东西,可以帮助我在Laravel中做同样的事情。我可以覆盖模型中的“toArray”方法,但这将影响所有应用程序部分(不仅仅是控制器中的索引操作)。
6条答案
按热度按时间nsc4cvqm1#
你可以在
Laravel
中做同样的事情,例如:还有其他方法可以做类似的事情。你可以在Laravel中做更多的事情。在众多方法中,也有一种变换方法。
js4nwp542#
这里是我的解决方案,只修改项目,而不失去分页数据
uhry853o3#
paginate()
和get()
将返回一个Collection
,让您可以访问所有Collection
方法。您将能够:
j0pj023g4#
已经提供的大多数答案都可以工作,但将返回一个集合,而不是一个分页的资源。技巧是在
map
'ping之前使用tap
辅助方法,以返回您修改的相同对象。jaql4c8m5#
我不确定是否还有人需要这个。但我找到了另一个解决办法。这不是最好的解决方案,但它完成了工作。
同时支持transform()和map()函数。这里是链接:https://jnbrnplbr.medium.com/transform-map-laravel-paginated-collection-b1ab912d7996
jm81lzqq6#
map
或transform
将不起作用。你应该使用through
,它在laravel官方API中指定的AbstractPaginator
中支持。例如:
参考:https://stackoverflow.com/a/65560742/11297747