sql >> Database >  >> NoSQL >> MongoDB

Kan de waarde van de parameter niet doorgeven aan de findOneBy Symfony-repository

Wat is in uw laatste codevoorbeeld het type $user variabel? Ik neem aan dat het een string kan zijn als het een routeringsparameter is en afkomstig is van de URI. U kunt var_dump() . gebruiken om het type en de waarde in één keer te krijgen.

Op basis van een eerdere opmerking zei u dat het Scripts-document de volgende velden had:

  • _id
  • naam (tekenreeks)
  • beschrijving (tekenreeks)
  • index (geheel getal)
  • user_id (geheel getal)

Als de index veld in uw MongoDB-document een geheel getal is, moet u een geheel getal gebruiken in de query. Bijvoorbeeld de findOneByIndex('1') komt niet overeen met een document met geheel getal 1 op zijn gebied. Een best practice hier is om te casten uw waarden naar het juiste type voordat u een query uitvoert. Het kan ook het beste zijn om te stoppen met vertrouwen op de magische DocumentRepository-methoden en expliciet uw eigen findBy te definiëren methoden, die het gieten intern doen. Vervolgens kan uw controller een numerieke reeks rechtstreeks doorgeven vanuit een routerings- of verzoekparameter en hoeft u zich geen zorgen te maken over het zelf casten van gehele getallen.

Ook om commentaar te geven op uw originele codevoorbeeld:

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

Dit was voor het routeringspatroon platform/designing/users/{user}/showuser . U zei dat dit geen resultaat heeft opgeleverd. Ik neem aan dat de $user argument voor uw controller is een gebruikers-ID. Als dat het geval is, waarom zocht u dan naar de index veld in plaats van user_id ?



  1. Hoe de lastErrorObject-eigenschappen te interpreteren die zijn geretourneerd door MongoDB?

  2. Hoe Django ORM te verbinden met Mongo Atlas?

  3. Kan BsonIgnoreIfDefault niet gebruiken voor eigenschap van het type long

  4. BSON-bibliotheek voor java?