php - 如何防止在 Laravel 中加载 hasMany 关系?
问题描述
假设我有以下模型:
Machine.php(简化):
class Machine
{
public function organization()
{
return $this->belongsTo(Organization::class);
}
public function readings()
{
return $this->hasMany(Reading::class);
}
}
我想写一个查询来获取所有机器的数据,但不是hasMany
关系。
目前,如果我在控制器中编写以下内容:return Machine::where('organization_id', Auth::user()->organization_id)->get();
,生成的数组将如下所示:
[
{
"id": 1,
"organization_id": 1,
"readings": []
},
{
"id": 2,
"organization_id": 1,
"readings": []
}
]
如何readings
从此输出中删除数组?我不仅想操作 JSON,因为从数据库中获取这些数据也需要相当长的时间。
编辑:所以不幸的是,我设法在我的 MCVE 中删除了罪魁祸首,这是 Machine 类上定义的属性,它readings
在每种情况下都查询该字段。删除该属性解决了我的问题。(请参阅此问题下的评论。)
解决方案
laravel 实际上在这里的文档中提到了这件事
您可以简单地将其添加到您的模型上
protected $hidden = ['readings'];
如果你需要在某个地方使用它,那么你可以使用 makeHidden 方法这样
Machines::somequery()->get()->makeHidden(['readings'])->toArray();
推荐阅读
- python - 如何正确导入 Weazyprint 错误显示列表索引超出范围
- python - 这个运算符在 Python 中的名称是什么?
- jquery - jQuery没有成功重置表单
- flutter - 如何在 Flutter 中正确放置一个红色椭圆?
- python - Python 输入与列表比较
- javascript - DOM 方法从节点获取正确的元素 - 仅使用 JavaScript
- python - 获取文件路径的最后 n 部分
- python - 如何使用经过训练的 CNN 对新图像进行分类?
- reactjs - 打字稿中的嵌套导出
- c++ - 我的 Snake 游戏在您吃苹果时崩溃,苹果在您选择新位置后会在您体内生成(C++,SDL)