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
?