MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Der Wert des Parameters kann nicht an das findOneBy Symfony-Repository übergeben werden

Was ist in Ihrem letzten Codebeispiel der Typ von $user Variable? Ich gehe davon aus, dass es sich um eine Zeichenfolge handeln kann, wenn es sich um einen Routing-Parameter handelt und von der URI stammt. Sie können var_dump() verwenden um Typ und Wert auf einmal zu erhalten.

Basierend auf einem früheren Kommentar sagten Sie, dass das Skriptdokument die folgenden Felder hatte:

  • _id
  • Name (Zeichenfolge)
  • Beschreibung (String)
  • Index (Ganzzahl)
  • user_id (Ganzzahl)

Wenn der index Feld in Ihrem MongoDB-Dokument eine ganze Zahl ist, müssen Sie in der Abfrage eine ganze Zahl verwenden. Zum Beispiel findOneByIndex('1') stimmt nicht mit einem Dokument mit der Ganzzahl 1 überein auf seinem Gebiet. Eine bewährte Vorgehensweise hier ist cast Ihre Werte vor der Abfrage in den entsprechenden Typ. Es kann auch am besten sein, sich nicht mehr auf die magischen DocumentRepository-Methoden zu verlassen und explizit Ihr eigenes findBy zu definieren Methoden, die das Casting intern durchführen. Dann kann Ihr Controller eine numerische Zeichenfolge direkt von einem Routing- oder Anforderungsparameter übergeben und muss sich nicht um die Ganzzahlumwandlung selbst kümmern.

Um Ihr ursprüngliches Codebeispiel zu kommentieren:

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

Dies war für das Routing-Muster platform/designing/users/{user}/showuser . Sie sagten, dass dies zu keinem Ergebnis geführt hat. Ich nehme den $user an Argument für Ihren Controller ist eine Benutzer-ID. Wenn dies der Fall ist, warum haben Sie den index abgefragt anstelle von user_id ?