簡體   English   中英

Laravel - 預加載 BelongsToMany 關系

[英]Laravel - Eager Loading BelongsToMany Relationship

我在兩個實體/表之間有一對多的關系。

在此處輸入圖像描述


    /**
     * Get all of the products.
     */
    public function products()
    {
        return $this->belongsToMany(Product::class)->select(
            [
                'products.id',
                'products.title',
                'products.sku',
                'automation_products.automation_id as auto_id',
                'display_order',
            ]
        )->orderBy('display_order');
    }

當我想要預加載這種關系時,后台似乎有重復的查詢在運行。 我使用此代碼來急切加載我的關系:

    $automation = \App\Models\Automation::with('products')->whereId(1)->get()->first();
    dump($automation->products()->get());
    dump($automation->products()->get());
    dump($automation->products()->get());

有什么我想念的嗎?

謝謝回復。

將加載關系加載到 model 屬性中。

您可以像$automation->products一樣訪問此屬性 - 無論她被調用多少次 - 查詢都將通過預加載執行一次

但是,當您調用 like ->products()->get() - eloquent 執行查詢時,因為您現在告訴“ get() relation products()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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