如何根据重复次数最多的数据(从上到下)获取自定义 collection

How to get a custom collection based on a data that is most repeated (from top to bottom))

我有一个 table 这样的:

基本上这个 table 被命名为 favourite_products 并且包含添加为用户收藏夹的产品 ID。

现在我想从这个 table 获得 collection 添加最多的产品。

所以在这种情况下,ID 为 10 的产品将位于 collection.

之上

但我不知道如何根据重复次数最多的产品 ID (prd_id) 获得此 collection 订单...

这是模型:

class FavouriteProduct extends Model
{
    protected $table = 'favourite_products';
    protected $fillable = ['usr_id','prd_id'];
    
    public function user()
    {
        return $this->belongsTo(User::class, 'usr_id');
    }

    public function product()
    {
        return $this->belongsTo(Product::class, 'prd_id');
    }
}

更新#1:

Product.php 型号:

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

试试这个

public function example()
{
    $data=FavouriteProduct::orderBy('prd_id', 'ASC')->get();
    dd($data);
}

我认为以下代码可以解决您的问题:

$most_liked_products = DB::table('favourite_products')
    ->select(DB::raw('count(prd_id) as total'), id)
    ->groupBy('total')
    ->orderByDesc('total')
    ->get();

请试用并提供反馈