php - 卡在雄辩的查询和子查询中
问题描述
我想在表格中显示用户的姓名以及本周发布的照片数量。示例:User1 发布了 10 张照片,User2 发布了 20 张照片...
所以我需要一个计数,但我不知道如何。
图片型号:
public function user()
{
return $this->belongsTo('App\Models\User');
}
用户型号:
public function pictures()
{
return $this->hasMany('App\Models\Picture');
}
在控制器中查询:
$users = User::whereHas('pictures',
fn($q) => $q->where('created_at', '>=', Carbon::now()->subDays(7)->toDateTimeString()))
->limit(10)
->get();
在视图中:
{{ $user->photos->count() }}
除了它计算用户的所有照片而不仅仅是过去一周的照片。我怎样才能只计算最近的照片?
解决方案
我这样做:
在用户模型中:
public function current_week_pictures()
{
return $this->hasMany('App\Models\Picture')
->whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()]);
}
在控制器中查询:
$users = User::whereHas('current_week_pictures')
->with('current_week_pictures')
->limit(10)
->get();
在视图中,计数:
{{ $user->pictures->count() }}