如何获得具有多对多关系的 table 的所有结果

How to get all results of a table with Many To Many relationship

我正在开发一个在线商店项目,我想创建添加到收藏夹 系统,以便用户将他们喜欢的产品添加到他们的收藏夹列表中。

所以我创建了一个名为 favourite_products 的 table,它是这样的:

所以usr_id代表用户id,prd_id代表产品id。

现在我想从这个 table 中获取所有数据。

所以我尝试将其添加到控制器中:

$userFavourites = new User();
dd($userFavourites->favourites);

但它没有 return 数据并显示为空 collection:

Illuminate\Database\Eloquent\Collection {#2862 ▼
  #items: []
}

但是那里已经存在数据。

所以我的问题是,如何在具有用户多对多关系的 table 中显示来自 favourite_products 的所有结果?

这是User.php型号:

public function favourites()
    {
        return $this->belongsToMany(Product::class, 'favourite_products', 'usr_id', 'prd_id')->withTimestamps();
    }

这是 Product.php 型号:

public function favouritees()
    {
        return $this->belongsToMany(User::class, 'favourite_products', 'prd_id', 'usr_id');
    }

如果您的目标是获得所有用户最喜欢的产品,请执行

Product::whereHas('favouritees')->get();

你也可以用它来统计

Product::whereHas('favouritees')->withCount('favouritees')->get();