簡體   English   中英

如何防止在 Laravel 中加載 hasMany 關系?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM