Laravel 查询构造器如何实现类似 Think-ORM 的 withAttr 批量处理数据集合功能?
laravel 查询构造器批量处理数据集合
类似于 think-orm 的 withattr 功能,可以在查询构造器中批量处理数据集合。
解决方案
laravel 中并不直接提供类似的功能,但可以通过修改内置的 toarray 方法或自己实现来达到目的。
自定义 toarray 方法
可以使用 service 或 helper 来实现自定义 toarray 方法。例如:
namespace appservices;class dataloader{ public static function convertstatus($value) { // 返回转换后的值 } public static function toarray($query, $attributes = []) { $data = $query->get()->toarray(); foreach ($data as $key => &$value) { foreach ($attributes as $field => $callback) { $value[$field] = $callback($value[$field]); } } return $data; }}
自己实现
foreach ($orders as &$order) { $order['status'] = ['待付款', '待发货'][$order['status']];}