首页 > 解决方案 > Laravel 多对多关系计数

问题描述

我有两张桌子。用户和天,具有多对多的关系。user_days : user_id, day_id

public function users()
{
    return $this->belongsToMany(User::class, 'user_day');
}

public function days()
{
    return $this->belongsToMany(Day::class, 'user_day');
}

我想获取 day_id = 1 {for a specific day} 或类似的用户数。有什么方法可以从数据透视表中获取计数?此功能不起作用。

public function assign_prize(Request $request)
{
    $userCount = $this->user->days()->withCount('users')->where($request->day_id, 'day_id')->get();
    $giftLimit = Day::where('id', $request->day_id)->get();
    if ($userCount > $giftLimit) {
        return problem(__("Gift for the current day has been finished!!"), 500, "Gift Assign Failed");
    }

表结构?

Schema::create('user_day', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('user_id')->unsigned();
    $table->integer('day_id')->unsigned();
    $table->boolean('assigned')->default(0);
    $table->timestamps();
});

如何查找特定日期的用户数?

标签: sqllaraveleloquentmany-to-manylaravel-query-builder

解决方案


您需要在雄辩的请求结束时使用计数选择器:

$userCount = users::all()->count();

推荐阅读