MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Impossible de transmettre la valeur du paramètre dans le référentiel findOneBy Symfony

Dans votre dernier exemple de code, quel est le type de $user variable? Je suppose qu'il peut s'agir d'une chaîne s'il s'agit d'un paramètre de routage et qu'il provient de l'URI. Vous pouvez utiliser var_dump() pour obtenir le type et la valeur en une seule fois.

Sur la base d'un commentaire précédent, vous avez dit que le document Scripts comportait les champs suivants :

  • _id
  • nom (chaîne)
  • description (chaîne)
  • indice (entier)
  • user_id (entier)

Si l'index champ dans votre document MongoDB est un entier, vous devrez utiliser un entier dans la requête. Par exemple, le findOneByIndex('1') ne correspondra pas à un document avec un entier 1 dans son domaine. Une bonne pratique ici consiste à diffuser vos valeurs au type approprié avant d'interroger. Il peut également être préférable d'arrêter de compter sur les méthodes magiques de DocumentRepository et de définir explicitement votre propre findBy méthodes, qui font le casting en interne. Ensuite, votre contrôleur peut transmettre une chaîne numérique directement à partir d'un paramètre de routage ou de requête et ne pas avoir à se soucier de faire le transtypage entier tout seul.

Aussi, pour commenter votre exemple de code d'origine :

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

C'était pour le modèle de routage platform/designing/users/{user}/showuser . Vous avez dit que cela n'a pas réussi à trouver un résultat. Je suppose que le $user l'argument de votre contrôleur est un ID utilisateur. Si tel est le cas, pourquoi avez-vous interrogé sur l'index champ au lieu de user_id ?