簡體   English   中英

渴望加載 3 關系?

[英]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關系,然后加載該cartproducts 它不會多次運行這些查詢,因為此User現在已加載其cart關系(因此當通過動態屬性訪問時不會再次加載)。 Cart已加載其products關系(通過動態屬性訪問時不會再次加載)。

如果您真的想“延遲加載”這些關系(您必須查看查詢是否有任何不同,因為它應該與通過動態屬性訪問它相同),您可以這樣做:

$products = auth()->user()->load('cart.products')->cart->products;

暫無
暫無

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

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