值得一看
双11 12
广告
广告

Lumen 分页结果集编辑与数据关联

lumen 分页结果集编辑与数据关联

本文档介绍了在 Lumen 框架中,如何对分页后的结果集进行编辑,并添加来自其他表的数据关联。通过示例代码,演示了如何将关联的分类信息添加到商品数据中,并解决了在动态添加属性时遇到的“Creating default object from empty value”错误。

在构建 REST API 时,经常需要从数据库中获取数据,并对其进行处理后再返回。Lumen 提供了方便的分页功能,但有时我们需要在分页结果的基础上,添加来自其他表的数据,例如关联的分类信息。以下代码展示了如何实现这一目标,并避免常见的错误。

首先,使用 Lumen 的数据库查询构建器获取商品数据,并进行分页:

$products = DB::table('storeItems as i')
->where('i.B2BAvailable', '=', '1')
->select('i.title','i.EAN','i.vendor','i.productType','i.ID as productID','i.releaseDate',DB::raw('(CASE WHEN (i.releaseDate > NOW()) THEN 1 ELSE 0 END) AS announced'))
->orderBy('i.releaseDate', 'desc')
->paginate(100);
//return response()->json($products); // 先注释掉,等数据处理完成后再返回

这段代码从 storeItems 表中查询数据,并根据 releaseDate 字段进行排序,然后进行分页,每页显示 100 条记录。

接下来,遍历分页后的结果集,并为每个商品添加分类信息。关键在于如何正确地将关联数据添加到 $product 对象中。

foreach($products as $product) {
$genres = DB::table('sCategoryConnector as ggc')
->join('sCatGenre as gg','gg.ID','=','ggc.ID_sCatGenre')
->where('ggc.EAN', '=', DB::raw("'".$product->EAN."'"))
->select('gg.tag')
->orderBy('gg.ID', 'asc')
->get();
if (count($genres) > 0) {
$product->genres = $genres;
}
}
return response()->json($products);

这段代码首先根据商品的 EAN 码,从 sCategoryConnector 和 sCatGenre 表中查询相关的分类信息。如果找到分类信息,则直接将 $genres 数组赋值给 $product 对象的 genres 属性。

注意事项:

在原始代码中,尝试使用动态属性名的方式来添加分类信息,导致了 “Creating default object from empty value” 错误。这是因为 $product 对象是一个 StdClass 对象,直接使用 $product->genres->$propName = $genre->tag; 这种方式动态创建多层嵌套的属性,会导致 PHP 无法正确识别。

总结:

在 Lumen 中,可以通过遍历分页结果集,并使用数据库查询构建器获取关联数据,然后直接将关联数据赋值给结果集中的对象属性,实现对分页结果集的编辑和数据关联。避免使用动态属性名的方式来创建嵌套属性,可以直接将整个关联数组赋值给对象属性。

温馨提示: 本文最后更新于2025-07-19 22:28:52,某些文章具有时效性,若有错误或已失效,请在下方留言或联系易赚网
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容