Laravel - 预加载 BelongsToMany 关系

Laravel - Eager Loading BelongsToMany Relationship

我有两个 entities/tables 之间的一对多关系。


    /**
     * 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());

有什么我遗漏的吗?

感谢您的回复。

急于将负载关系加载到模型中 属性。

您可以像 $automation->products 一样访问此 属性 - 无论她被调用多少次 - 查询都将执行 ONE 次并进行预加载。

但是,当您调用 ->products()->get() - eloquent 执行查询时,因为您告诉“get() 关系 products() 现在”