MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Impossibile passare il valore del parametro nel repository findOneBy Symfony

Nel tuo ultimo esempio di codice, qual è il tipo di $user variabile? Presumo che potrebbe essere una stringa se si tratta di un parametro di routing e proveniente dall'URI. Puoi usare var_dump() per ottenere il tipo e il valore in un colpo solo.

Sulla base di un commento precedente, hai affermato che il documento Script aveva i seguenti campi:

  • _id
  • nome (stringa)
  • descrizione (stringa)
  • indice (numero intero)
  • id_utente (numero intero)

Se l'index campo nel tuo documento MongoDB è un numero intero, dovrai utilizzare un numero intero nella query. Ad esempio, il findOneByIndex('1') non corrisponderà a un documento con numero intero 1 nel suo campo. Una procedura consigliata qui è quella di cast i valori al tipo appropriato prima di eseguire query. Potrebbe anche essere meglio smettere di fare affidamento sui metodi magici di DocumentRepository e definire esplicitamente il proprio findBy metodi, che effettuano la colata internamente. Quindi, il tuo controller può passare una stringa numerica direttamente da un parametro di instradamento o richiesta e non deve preoccuparsi di eseguire il cast dell'intero da solo.

Inoltre, per commentare il tuo esempio di codice originale:

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

Questo era per il modello di instradamento platform/designing/users/{user}/showuser . Hai detto che questo non è riuscito a trovare un risultato. Presumo il $user argomento per il tuo controller è un ID utente. In tal caso, perché stavi interrogando sull'index campo invece di user_id ?