Laravel 预加载和API资源的使用,解决多表关联查询的返回数据结构

本文介绍了在Laravel 5.5及更高版本中如何使用预加载和API资源来优化多表关联查询的返回数据结构。当需要从User模型获取Article和Category模型的数据时,作者首先尝试了预加载和远程关联,但发现数据结构不理想。然后转向使用API资源,创建了UserResource和ArticleResource,通过toArray方法定制返回字段,实现所需的数据结构。对于单条数据,直接实例化资源类,而对于多条数据或分页数据,则使用资源集合。
摘要由CSDN通过智能技术生成
Laravel在5.5以后,更新了API资源

资源的生成和介绍相关,请自行查看文档: Laravel 5.8文档

动机

我一直用的都是其他框架,Laravel是最近一个项目才去实际接触,确实是很赞的一款框架。
在项目中,我碰到了这样一个问题:

User模型和Article模型 1对多关联,而Article模型和Caregory模型1对1关联。
我现在需要通过User模型获取到Article表和Category表中的数据。

第一次尝试:预加载 + 远程关联

在阅读文档时,预加载模型,可以很好的去获取关联模型的字段。如下:

	public function index(int $id)
    {
        return User::with('articles')->find($id);
    }

获取的结果集像这样:

{
    "id": 9,
    "name": "张三",
    "create_time": "2019-03-18 17:40:59",
    "articles": [
        {
            "id": 1,
            "title": "Laravel",
            "user_id": 9,
            "content": "测试1",
            "category_id": 1,
            "created_at": "2019-04-13 17:59:12"
        },
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值