gpt4 book ai didi

php - 坚持 Eloquent 查询和子查询

转载 作者:行者123 更新时间:2023-12-04 07:14:37 27 4
gpt4 key购买 nike

我想在表格中显示用户的姓名以及本周发布的照片​​数量。
示例:用户 1 发布了 10 张照片,用户 2 发布了 20 张照片......
所以我需要一个计数,但我不知道如何。
图片型号:

public function user()
{
return $this->belongsTo('App\Models\User');
}
用户模型:
public function pictures()
{
return $this->hasMany('App\Models\Picture');
}
在 Controller 中查询:
$users = User::whereHas('pictures', 
fn($q) => $q->where('created_at', '>=', Carbon::now()->subDays(7)->toDateTimeString()))
->limit(10)
->get();
在 View 中:
{{ $user->photos->count() }}
除了它计算用户的所有照片,而不仅仅是过去一周的照片。怎么只能统计最近的照片?

最佳答案

创建新关系是解决问题的有效方法,但这是另一种选择。
您可以使用 withCount()方法。通过传递数组,您可以使用闭包来限制计数的结果以匹配关系上的约束:

$users = User::whereHas(
'pictures',
fn($q) => $q->where('created_at', '>=', now()->subWeek())
)
->withCount([
'pictures' => fn ($q) => $q->where('created_at', '>=', now()->subWeek()
])
->limit(10)
->get();
现在在您看来,您可以使用 $user->pictures_count .

关于php - 坚持 Eloquent 查询和子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68850223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com