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 關注
- 163 瀏覽
添加回答
舉報