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()
现在”
我有两个 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()
现在”