No sé cuál es el problema con mi consulta, pero el conteo claramente está mal, seguía mostrándose como 1912 cuando mis registros totales son 12363
para cambiar esta línea en mi caso predeterminado
$q = Visitor::where('created_at', '<', now());para
$q = Visitor::all(); but I got error;El método Illuminate\Database\Eloquent\Collection::orderBy no existe.
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=año
Obtuve 1912 - correcto 👍🏽
http://aplicación.prueba/visitante
Obtuve 1912 - no es correcto ❌, debería consultar todo ya que no se especifica el intervalo.
Si lo hago :
dd(count(Visitor::all())); 12363 , por lo que debería ser el valor correcto.
$q = Visitor::all(); devuelve Illuminate\Database\Eloquent\Collection .
Llamando $visitors = $q->orderBy('created_at', 'desc')->paginate(15); llamará a ->orderBy(...) en una Eloquent Collection de la cual ese método no existe en esa clase.
En vez de:
$q = Visitor::where('created_at', '<', now()); ❌Utilizar esta:
$q = Visitor::query(); ✅Tal vez pueda usar ->whereDate('created_at', now()) , con ->whereTime('created_at', '00:00:00') si lo necesita