在Laravel中,我可以不选择$ appends适用于特定数据库调用的模型的附加项吗?

问题描述 投票:0回答:1

我继承了Laravel API代码库,之前没有个人接触过Laravel。

我面临的一个问题是Controller返回的值比我明确要求的要多。

例如,一个用户拥有所有常用的东西-名字,姓氏,电子邮件等...

用户还拥有他们所订阅的课程,以及他们已经完成的课程等。

在用户模型中,$appends = [...]与某些setThisAttribute功能一起使用,以使用来自那些关联模型的数据加载模型。我可以理解为什么以前的开发人员会这样做,因为对于某些API调用而言,这非常方便。

到目前为止,我了解所有这些。

尽管有时我只是想获得我明确要求的用户数据。

在控制器中,我可能会编写类似(非常简单的示例)的内容:

$users = User::select('users.id', 'users.first_name')->get();

我想接收:

[
  {
    id: 1,
    first_name: "Jackson"
  },
  ...
]

但是我目前正在得到类似的东西:

[
  {
    id: 1,
    first_name: "Jackson",
    courses: [...lots of data...],
    lessons:  [...even more data...]
  },
  ...
]

有问题的实际响应中的差异是<100毫秒以将我想要的内容下载到客户端,而> $ s的东西在10秒钟内使模型超载。

是否有一种方法可以选择退出[[some数据库调用的$ appends添加项,或者我是否必须重写整个API来明确询问当前依赖$ appends的地方需要什么? ?

php laravel eloquent
1个回答
0
投票

返回时,您可以使用:

$users = User::select('users.id', 'users.first_name')->get()->makeHidden(['courses', 'lessons']);

© www.soinside.com 2019 - 2024. All rights reserved.