我继承了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的地方需要什么? ?
返回时,您可以使用:
$users = User::select('users.id', 'users.first_name')->get()->makeHidden(['courses', 'lessons']);