
在 laravel 中批量处理数据集合
在 php 框架 laravel 中,查询构造器提供了强大的功能来处理数据集合。但它缺乏类似于 thinkphp 中 withattr 方法的功能,无法对数据集合的特定字段进行批量转换。
自实现方法
一种解决方案是自行实现一个方法。例如,以下代码可将 status 字段从数值转换为可读字符串:
立即学习“PHP免费学习笔记(深入)”;
$callback) { $item->{$field} = $callback($item->{$field}, $item); } } return $collection; }}
使用此方法,您可以像这样对订单数据集合进行转换:
$orders = datacollectionhelper::withattr($orders, [ 'status' => function($status) { return ['待付款', '待发货'][$status]; }]);
修改内置方法
另一种方法是修改 laravel 内置的 toarray 方法。您可以创建一个新的模型或服务提供者,并覆写 toarray 方法,在其中添加所需的转换。
<?phpnamespace appservices;use illuminatedatabaseeloquentmodel;use illuminatedatabaseeloquentcollection;class dataprocessservice extends model{ protected static function boot() { parent::boot(); // 覆写 toarray 方法 static::observe(new dataprocessobserver); }}
观察者
transform(function ($item) { $item->status = ['待付款', '待发货'][$item->status]; return $item; }); } }}
以上就是如何在 Laravel 中实现类似 ThinkPHP withAttr 的批量数据转换功能?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1248884.html
微信扫一扫
支付宝扫一扫