Hola,
Estoy experimentando un problema al utilizar Laravel Passport en mi proyecto. Estoy tratando de crear un cliente de OAuth para mi aplicación, pero estoy recibiendo un error y no puedo resolverlo.
Aquí está el código que estoy utilizando para crear el cliente:
use Illuminate\Support\Facades\DB;
$client = DB::table('oauth_clients')
->where('name', 'Cliente de prueba')
->first();
if(!$client) {
$client = DB::table('oauth_clients')->insertGetId([
'name' => 'Cliente de prueba',
'secret' => hash('sha256', 'cliente_secreto'),
'redirect' => 'https://mi-aplicacion.com/callback',
'personal_access_client' => 0,
'password_client' => 1,
'revoked' => 0,
'created_at' => now(),
'updated_at' => now()
]);
}
return $client;
Este código debería crear un cliente de OAuth si no existe y devolverlo. Sin embargo, estoy obteniendo el siguiente error:
Call to undefined function Illuminate\Support\Carbon\now()
He revisado mi código y parece que todo está bien. ¿Qué estoy haciendo mal? ¿Cómo puedo solucionar este error?
¡Gracias de antemano por su ayuda!
¡Hola Lynn!
El problema que estás experimentando se debe a que estás tratando de usar la función now()
que no existe en el espacio de nombres Illuminate\Support\Carbon
. La función now()
es un helper global en Laravel que te devuelve una instancia de Carbon
con la fecha y hora actual. Si quieres utilizarla directamente, debes asegurarte de importar la clase Carbon
al comienzo de tu archivo o bien usar la fachada Date
proporcionada por Laravel. Aquí te dejo cómo debería verse tu código corregido:
Primero, asegúrate de importar la clase Carbon con el siguiente use
:
use Carbon\Carbon;
Y luego, en lugar de now()
, usa Carbon::now()
:
$client = DB::table('oauth_clients')
->where('name', 'Cliente de prueba')
->first();
if(!$client) {
$client = DB::table('oauth_clients')->insertGetId([
'name' => 'Cliente de prueba',
'secret' => hash('sha256', 'cliente_secreto'),
'redirect' => 'https://mi-aplicacion.com/callback',
'personal_access_client' => 0,
'password_client' => 1,
'revoked' => 0,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
}
return $client;
Otra alternativa, si quieres seguir usando el helper now()
global, simplemente elimina el espacio de nombres Illuminate\Support\Carbon
, ya que no lo necesitas para usar helpers globales como now()
. Tu código debería funcionar correctamente con la función now()
sin ninguna importación adicional.
Espero que esto resuelva tu problema. ¡Suerte con tu proyecto en Laravel Passport!