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
?