Laravel 8 如何向模型查询返回的结果追加额外自定义字段
Laravel 8 给分页模型数据集追加自定义计算字段的实现方法
Laravel 中 paginate() 方法返回的是 LengthAwarePaginator 分页实例,其包含的模型数据集本身支持集合操作,你可以直接通过 each() 方法遍历每条记录追加自定义字段,不会丢失原有分页信息。
完整实现代码
// 原有分页查询逻辑 $marketingteam = marketingteam::orderby('id','desc')->paginate(15); // 遍历数据集追加自定义计算字段 $marketingteam->each(function ($item) { // 此处替换为你实际的业务计算逻辑即可 $item->targetachived = '你的计算结果'; $item->bonus = '你的计算结果'; }); // 直接传递到视图,原有分页功能不受影响 return view('你的视图路径', ['marketingteams' => $marketingteam]);
注意说明
- 遍历过程中直接给模型实例动态绑定属性即可,Blade 视图中可以直接通过
$item->targetachived、$item->bonus读取对应值 - 不要使用
map()方法处理后直接覆盖分页实例,否则会丢失分页元数据(总页数、当前页、总条数等信息) - 如果你需要将数据转为数组/JSON返回(比如接口场景),可以在遍历时追加append配置,保证自定义字段可被序列化:
$marketingteam->each(function ($item) { $item->targetachived = '计算结果'; $item->bonus = '计算结果'; // 追加到序列化可见字段 $item->setAppends(array_merge($item->getAppends(), ['targetachived', 'bonus'])); });
内容的提问来源于stack exchange,提问作者Ajith jojo
相关产品推荐
相关产品推荐

