sql >> Base de Datos >  >> NoSQL >> MongoDB

No se puede pasar el valor del parámetro al repositorio findOneBy Symfony

En su último ejemplo de código, ¿cuál es el tipo de $user? ¿variable? Supongo que puede ser una cadena si es un parámetro de enrutamiento y proviene del URI. Puedes usar var_dump() para obtener el tipo y el valor de una vez.

Según un comentario anterior, dijo que el documento Scripts tenía los siguientes campos:

  • _id
  • nombre (cadena)
  • descripción (cadena)
  • índice (entero)
  • id_usuario (entero)

Si el index campo en su documento MongoDB es un número entero, deberá usar un número entero en la consulta. Por ejemplo, findOneByIndex('1') no coincidirá con un documento con el número entero 1 en su campo. Una buena práctica aquí es cast sus valores al tipo apropiado antes de consultar. También puede ser mejor dejar de confiar en los métodos mágicos de DocumentRepository y definir explícitamente su propio findBy métodos, que hacen la colada internamente. Luego, su controlador puede pasar una cadena numérica directamente desde un parámetro de enrutamiento o solicitud y no tener que preocuparse por hacer la conversión de enteros por sí solo.

Además, para comentar su ejemplo de código original:

$script = $repository->findOneByIndex($user);

Esto fue para el patrón de enrutamiento platform/designing/users/{user}/showuser . Dijiste que esto no pudo encontrar un resultado. Supongo que el $user argumento para su controlador es una ID de usuario. Si ese es el caso, ¿por qué estabas consultando en el index? campo en lugar de user_id ?