[英]Eager loading 3 relationships?
我有這些表:
users | name - ...
carts | user_id - ...
cart_product | cart_id - product_id
關系:
Cart model
public function products()
{
return $this->belongsToMany(Product::class)
->withPivot('quantity','coupon_id')
->withTimestamps();
}
User model:
public function cart()
{
return $this->hasOne(Cart::class);
}
當我進行查詢時,查詢中有 n+1,如下所示:
auth()->user()->cart()->with('products')->products
我怎樣才能急切地加載查詢?
我假設您只想要產品?
$products = auth()->user()->cart->products;
這將加載cart
關系,然后加載該cart
的products
。 它不會多次運行這些查詢,因為此User
現在已加載其cart
關系(因此當通過動態屬性訪問時不會再次加載)。 該Cart
已加載其products
關系(通過動態屬性訪問時不會再次加載)。
如果您真的想“延遲加載”這些關系(您必須查看查詢是否有任何不同,因為它應該與通過動態屬性訪問它相同),您可以這樣做:
$products = auth()->user()->load('cart.products')->cart->products;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.