2 回答
TA贡献1735条经验 获得超5个赞
whereHas()您可以使用该方法返回所有已购买的用户。
public function index(Request $request){
$users = User::query();
if ($request->is_paid) {
$users->whereHas('purchasedRelation');
}
return view('user.index', [
'users' => $users->paginate(10),
]);
}
TA贡献1828条经验 获得超3个赞
如果有人偶然发现同样的错误并供将来参考,我将发布我用来解决问题的方法:
创建的自定义getAttribute 只能在检索模型后获取。
那是使用first()或find()
您不能在查询集合中进行过滤。
所以为了过滤唯一的is_paid属性;我首先检索模型的集合,然后像这样过滤:
public function index(Request $request){
$isPaid = $request->is_paid;
$users = User::get();
if($isPaid){
$users = $users->where('is_paid', true);
}
$users = $users->paginate(10);
return view('user.index', [
'users' => $users
]);
}
为了使用分页进行收集,我遵循了Gist For Paginated Collections In Laravel
- 2 回答
- 0 关注
- 122 浏览
添加回答
举报