[英]How to prevent a hasMany relation from loading in Laravel?
假設我有以下模型:
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();
您可以使用
protected $hidden = ['readings'];
首先你需要創建一個 api 資源或轉換器檢查這個鏈接https://laravel.com/docs/5.5/eloquent-resources
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.