我不知道我的查询出了什么问题,但计数明显错误,当我的总记录为 12363
时,它一直显示为 1912
我尝试过
在我的默认情况下更改此行
$q = Visitor::where('created_at', '<', now());
至
$q = Visitor::all(); but I got error;
Method Illuminate\Database\Eloquent\Collection::orderBy does not exist.
switch ($interval) {
case 'day':
$q = Visitor::where('created_at', '>', now()->today());
break;
case 'week':
$q = Visitor::where('created_at', '>', now()->subWeek());
break;
case 'month':
$q = Visitor::where('created_at', '>', now()->subMonth());
break;
case 'year':
$q = Visitor::where('created_at', '>', now()->subYear());
break;
case 'last':
$q = Visitor::where('created_at', '>', $last);
break;
default:
$q = Visitor::where('created_at', '<', now());
break;
}
$visitors = $q->orderBy('created_at', 'desc')->paginate(15);
http://app.test/visitor?interval=year
我得到1912
- 正确👍🏽
我得到1912
- 不正确❌,它应该查询全部,因为未指定间隔。
如果我这样做:
dd(count(Visitor::all()));
我得到了12363
,所以这应该是正确的值。
如果您发现我错过了什么,请告诉我
最佳答案
$q = Visitor::all();
返回一个 Illuminate\Database\Eloquent\Collection
。
调用 $visitors = $q->orderBy('created_at', 'desc')->paginate(15);
将调用 ->orderBy(...)
code> 位于该类中不存在该方法的 Eloquent Collection 上。
解决方案
而不是:
$q = Visitor::where('created_at', '<', now()); ❌
使用这个:
$q = Visitor::query(); ✅
关于php - 如何查询 all、orderby 和 paginate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71504886/