假设我有以下模型:
Machine.php(简化):
class Machine
{
public function organization()
{
return $this->belongsTo(Organization::class);
}
public function readings()
{
return $this->hasMany(Reading::class);
}
}
我想编写一个查询来获取所有机器的数据,但不是 hasMany
关系。
目前,如果我在 Controller 中编写以下内容: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 实际上在他们的文档中提到了这件事 here
您只需将其添加到您的模型中即可
protected $hidden = ['readings'];
如果你需要在某个地方使用它,那么你可以使用像这样的 makeHidden 方法
Machines::somequery()->get()->makeHidden(['readings'])->toArray();
关于php - 如何防止在 Laravel 中加载 hasMany 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57188839/