es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Symfony Doctrine esperaba una función conocida, obtuvo ‘JSON_GET_TEXT’

Estoy tratando de usar el DoctrineJsonFunctions para filtrar en la columna de rol de la tabla de usuarios.

He seguido la documentación y he buscado ayuda pero no puedo encontrar una solución para mi problema.

He instalado correctamente el DoctrineJsonFunctions.

He creado una función en mi UserRepository que es:

public function findByRole(string $role)
    {
        $em = $this->getEntityManager();
        $qb = $em->createQueryBuilder();

    $qb
        ->select('u')
        ->from('App:User', 'u')
        ->where("JSON_GET_TEXT(user.roles, 'role') = :role")
        ->setParameter('role', $role)
        ->getQuery()
        ->getResult();
}

Pero estoy teniendo este error:

Se esperaba una función conocida, se obtuvo ‘JSON_GET_TEXT’

¿Alguien tiene alguna idea de por qué y puede ayudarme a resolverlo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error que estás experimentando es causado por DoctrineJsonFunctions no siendo registrado correctamente como una función DQL con Doctrine.

    Puedes intentar registrar la función en tu archivo config/packages/doctrine.yaml de la siguiente manera:

    doctrine:
        orm:
            dql:
                string_functions:
                    JSON_GET_TEXT: DoctrineExtensions\Query\Mysql\JsonGetText
    

    Asegúrate de tener el espacio de nombres correcto para JsonGetText si no estás utilizando MySQL.

    Alternativamente, puedes intentar usar el nombre completo de la función DoctrineExtensions\Query\Mysql\JsonGetText en lugar de JSON_GET_TEXT en tu generador de consultas.

    ¡Espero que esto ayude!

Comments are closed.