php - 如何查询 all、orderby 和 paginate?

标签 php laravel laravel-5 eloquent laravel-8

enter image description here

我不知道我的查询出了什么问题,但计数明显错误,当我的总记录为 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 - 正确👍🏽


http://app.test/visitor

我得到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/

相关文章:

php - pdo mysql 将一个查询插入两次

php - 在文本区域中输入数字或字符时如何减少计数

php - is_dir 和 is_file 不适用于根路径

php - 'mv' 不是内部或外部命令,也不是可运行的程序或批处理文件

laravel - 如何在 Laravel 5 中的关系上添加默认范围/条件?

Laravel 集合对集合中的多列求和

php - 奇怪的行为,通过引用分配 undefined variable

sql - Postgresql 复合唯一键(姓氏、名字、中间名)不起作用?

php - Laravel 5 中的空值

javascript - 基于Javascript Condition渲染 Blade 模板