如何根据重复次数最多的数据(从上到下)获取自定义 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();
请试用并提供反馈
我有一个 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();
请试用并提供反馈