Tengo una columna de enteros de minutes en la base de datos, ¿alguna forma de hacer que la siguiente consulta funcione sin una consulta adicional? Laravel 8 si importa.
Contest::latest()->where('created_at','>', Carbon::now()->subMinutes('minutes')->toDateTimeString())->paginate(4);
ErrorException: A non-numeric value encountered in file
No puede hacer esto sin una consulta adicional. Carbon es una biblioteca PHP y no funcionará dentro de la consulta SQL. Sin embargo, SQL proporciona funcionalidad nativa para lo que necesita hacer:
Contest::latest() ->where('created_at','>', DB::raw('NOW()-INTERVAL minutes MINUTE'))->paginate(4) En general, esto debería funcionar, aunque es posible que deba reemplazar NOW() con lo que proporcione el DBMS si no usa MySQL.
Al ver la documentación, puedo ver que el método subMinutes() acepta un número entero como parámetro, no una cadena. Tal vez intente arreglar eso primero. Cuando pruebo Carbon::now()->subMinutes('minutes')->toDateTimeString() ejecutándose localmente, aparece un error similar: se encontró un valor no numérico.
Puede encontrar información sobre la suma y resta de carbono aquí