sql >> Databasteknik >  >> NoSQL >> MongoDB

Kan inte skicka parametervärdet till findOneBy Symfony-förrådet

I ditt senaste kodexempel, vad är typen av $user variabel? Jag antar att det kan vara en sträng om det är en routingparameter och kommer från URI:n. Du kan använda var_dump() för att få typ och värde i ett slag.

Baserat på en tidigare kommentar sa du att Scripts-dokumentet hade följande fält:

  • _id
  • namn (sträng)
  • beskrivning (sträng)
  • index (heltal)
  • användar-id (heltal)

Om index fältet i ditt MongoDB-dokument är ett heltal, du måste använda ett heltal i frågan. Till exempel, findOneByIndex('1') kommer inte att matcha ett dokument med heltal 1 inom sitt område. En bästa praxis här är att casta dina värden till lämplig typ innan du frågar. Det kan också vara bäst att sluta lita på de magiska DocumentRepository-metoderna och uttryckligen definiera din egen findBy metoder, som gör gjutningen internt. Sedan kan din styrenhet skicka en numerisk sträng direkt från en routing- eller begäranparameter och behöver inte oroa dig för att göra heltalscasten på egen hand.

För att kommentera ditt ursprungliga kodexempel:

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

Detta var för routingmönstret platform/designing/users/{user}/showuser . Du sa att detta inte lyckades hitta något resultat. Jag antar $user argument till din kontroller är ett användar-ID. Om så är fallet, varför frågade du på index i stället för user_id ?



  1. Mongoose:Cast till ObjectId misslyckades

  2. Hur hämtar man ett värde från mongoDB, efter dess nyckelnamn?

  3. I MongoDB, om samlingen tas bort, sjunker index automatiskt också?

  4. Hur man deklarerar samlingsnamn och modellnamn i mongoose