PHP前端开发

Laravel 查询构造器如何实现类似 Think-ORM 的 withAttr 批量处理数据集合功能?

百变鹏仔 2天前 #PHP
文章标签 批量

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']];}